当前位置:编程学习 > C#/ASP.NET >>

c#excel生成高级报表要实现打印

c#excel生成高级报表找到很多资料,但不明白代码的意思,希望能一句一句帮我解释一下吗,还有里面的一些数字是怎么来的。二维数组改成数据库调取的代码该怎么写。或者还有其他方法教我一下。。。我刚学所以不是很明白,麻烦大家了
using System;
            using System.Drawing;
            using System.Collections;
            using System.ComponentModel;
            using System.Windows.Forms;
            using System.Data;
            using System.IO;
            using System.Reflection;
            namespace MyExcel
            {
            /// <summary>
            /// Form1 的摘要说明。
            /// </summary>
            public class Form1 : System.Windows.Forms.Form
            {
            private System.Windows.Forms.Button btnNormal;
            private System.Windows.Forms.Button btnAdvace;
            /// <summary>
            /// 必需的设计器变量。
            /// </summary>
            private System.ComponentModel.Container components = null;
            public Form1()
            {
            //
            // Windows 窗体设计器支持所必需的
            //
            InitializeComponent();
            //
            // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            //
            }
            /// <summary>
            /// 清理所有正在使用的资源。
            /// </summary>
            protected override void Dispose( bool disposing )
            {
            if( disposing )
            {
            if (components != null)
            {
            components.Dispose();
            }
            }
            base.Dispose( disposing );
            }
            #region Windows Form Designer generated code
            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
            this.btnNormal = new System.Windows.Forms.Button();
            this.btnAdvace = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // btnNormal
            //
            this.btnNormal.Location = new System.Drawing.Point(49, 55);
            this.btnNormal.Name = "btnNormal";
            this.btnNormal.TabIndex = 0;
            this.btnNormal.Text = "普通报表";
            this.btnNormal.Click += new System.EventHandler(this.btnNormal_Click);
            //
            // btnAdvace
            //
            this.btnAdvace.Location = new System.Drawing.Point(169, 55);
            this.btnAdvace.Name = "btnAdvace";
            this.btnAdvace.TabIndex = 1;
            this.btnAdvace.Text = "高级报表";
            this.btnAdvace.Click += new System.EventHandler(this.btnAdvace_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
            this.ClientSize = new System.Drawing.Size(292, 133);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
            this.btnAdvace,this.btnNormal});
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Form1";
            this.ResumeLayout(false);
            }
            #endregion
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
            Application.Run(new Form1());
            }
            private string [,] myData=
            {
            {"车牌号","类型","品 牌","型 号","颜 色","附加费证号","车架号"},
            {"浙KA3676","危险品","货车","铁风SZG9220YY","白","1110708900","022836"},
            {"浙KA4109","危险品","货车","解放CA4110P1K2","白","223132","010898"},
            {"浙KA0001A","危险品","货车","南明LSY9190WS","白","1110205458","0474636"},
            {"浙KA0493","上普货","货车","解放LSY9190WS","白","1110255971","0094327"},
            {"浙KA1045","普货","货车","解放LSY9171WCD","蓝","1110391226","0516003"},
            {"浙KA1313","普货","货车","解放9190WCD","蓝","1110315027","0538701"},
            {"浙KA1322","普货","货车","解放LSY9190WS","蓝","24323332","0538716"},
            {"浙KA1575","普货","货车","解放LSY9181WCD","蓝","1110314149","0113018"},
            {"浙KA1925","普货","货车","解放LSY9220WCD","蓝","1110390626","00268729"},
            {"浙KA2258","普货","货车","解放LSY9220WSP","蓝","111048152","00320"}
            };
            //普通报表,即单纯的文件导出功能
            private void btnNormal_Click(object sender, System.EventArgs e)
            {
            //创建一个Excel文件
            Excel.Application myExcel = new Excel.Application ( ) ;
            myExcel.Application.Workbooks.Add ( true ) ;
            //让Excel文件可见
            myExcel.Visible=true;
            //第一行为报表名称
            myExcel.Cells[1,4]="普通报表";
            //逐行写入数据,
            for(int i=0;i<11;i++)
            {
            for(int j=0;j<7;j++)
            {
            //以单引号开头,表示该单元格为纯文本
            myExcel.Cells[2+i,1+j]="'"+myData[i,j];
            }
            }
            }
            //高级报表,根据模板生成的报表
            private void btnAdvace_Click(object sender, System.EventArgs e)
            {
            string filename="";
            //将模板文件复制到一个新文件中
            SaveFileDialog mySave=new SaveFileDialog();
            mySave.Filter="Excel文件(*.XLS)|*.xls|所有文件(*.*)|*.*";
            if(mySave.ShowDialog()!=DialogResult.OK)
            {
            return;
            }
            else
            {
            filename=mySave.FileName;
            //将模板文件copy到新位置,建议实际开发时用相对路径,如
            //Application.StartupPath.Trim()+"\\report\\normal.xls"
            string filenameold=mySave.FileName;
            FileInfo mode=new FileInfo("d:\\normal.xls");
            try
            {
            mode.CopyTo(filename,true);
            }
            catch(Exception ee)
            {
            MessageBox.Show(ee.Message);
            return;
            }
            }
            //打开复制后的文件
            object missing=Missing.Value;
            Excel.Application myExcel=new Excel.Application ( );
            //打开新文件
            myExcel.Application.Workbooks.Open(filename,missing,missing,missing,missing,
            missing,missing,missing,missing,missing,missing, missing,missing);
            //将Excel显示出来
            myExcel.Visible=true;
            //逐行写入数据,数组中第一行我列标题,忽略
            for(int i=1;i<11;i++)
            {
            for(int j=0;j<7;j++)
            {
            //以单引号开头,表示该单元格为纯文本
            myExcel.Cells[4+i,1+j]="'"+myData[i,j];
            }
            }
            //将列标题和实际内容选中
            Excel.Workbook myBook=myExcel.Workbooks[1];
            Excel.Worksheet mySheet=(Excel.Worksheet)myBook.Worksheets[1];
            Excel.Range r=mySheet.get_Range(mySheet.Cells[3,1],mySheet.Cells[14,7]);
            r.Select();
            //=====通过执行宏来格表格加边框=======//
            try
            {
            myExcel.Run("宏1",missing,missing,
            missing,missing,missing,missing,missing,missing,missing,
            missing,missing,missing,missing,missing,missing,missing,
            missing,missing,missing,missing,missing,missing,missing,
            missing,missing,missing,missing,missing,missing,missing);
            }
            catch
            {
            }
            //保存修改
            myBook.Save();
            }
            }//end of form
            }
            

--------------------编程问答-------------------- 你去用我扩展的DataGridView吧,可以导出excel和直接打印
http://download.csdn.net/source/3407133
--------------------编程问答-------------------- 你这个太麻烦了,用flexcell控件,方便简单!导出EXCEL,打印只要几行代码就OK。 --------------------编程问答-------------------- 我们除了DataGridView到处excel以外还要从gridview到出到报表,所以想要一个通用的方法,做好是一个类地形式方便控制格式,flexcell控件是第三方控件吗,要收费的嘛
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,