C#操作Excel,将DataGridView数据导出到Excel中

这几天忙着帮一位朋友写一个信息登记系统,其中需要把登记数据打印出来。之前没做过报表,又找不到好的材料。要打印的信息数目多,且Winform里做打印编辑挺麻烦。忽然想到把数据导出到Excel中,在Excel里排版打印,问题就解决了。

在Visual C#中调用Excel表格,并不像读取Excel表格中的数据那么容易了,因为在Visual C#中调用Excel表格要使用到Excel的COM组件。如果你安装Office套件在"C"盘,那么在"C:\Program Files\Microsoft Office\Office"可以找到这个COM组件"EXCEL9.OLB",这些COM组件都是非受管代码的,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的类库。所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。
  (1).非受管代码COM组件转换成受管代码的类库:
     首先把COM组件"EXCEL9.OLB"拷贝到C盘的根目录下,在命令提示符窗口(cmd.exe)里输入path %path%;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\bin。(创建新路径)。
          然后输入c:回车,再输入cd\回车,(在c盘根目录下编辑)
          最后输入下列命令:tlbimp excel9.olb
    这样在C盘的根目录下面就产生了三个DLL文件:"Excel.dll"、"Office.dll"、"VBIDE.dll"。在产生了上面的三个文件后,这种转换就成功完成了。在下面的程序中,就可以利用这转换好的三个类库编写和Excel表格相关的各种操作了。

      (2).Visual C#打开Excel表格:
         "Excel.dll"中定义了一个命名空间"Excel",在差命名空间中封装了一个类"Application",这个类和启动Excel表格有非常重要的关系,在Visual C#中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:
                Excel.ApplicationClass Mylxls = new Excel.ApplicationClass();
                Mylxls.Application.Workbooks.Add(true);
                Mylxls.Visible = true ;
  但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。

  (3).往Excel表格中输入数据:
   在命名空间"Excel"中,还定义了一个类"Cell",这个类所代表的就是Excel表格中的一个下单元。通过给差"Cell"赋值,从而实现往Excel表格中输入相应的数据,下列代码功能是打开Excel表格,并且往表格输入一些数据。
                Excel.ApplicationClass Mylxls = new Excel.ApplicationClass();
                Mylxls.Application.Workbooks.Add(true);
                Mylxls.Caption = "XX市接收安置复员退伍军人登记表";
                Mylxls.Cells[1, 1] = "XX市200  年接收安置复员退伍军人登记表";
                Mylxls.Cells[2, 1] = "XX市人民政府接待安置复员退伍军人办公室";

      (4). Visual C#调用Excel表格,
  了解了上面的这些知识,得到完成上述功能的程序代码就显得比较容易了,函数具体如下:

private void myExcel()
        {
            try
            {
                Excel.ApplicationClass Mylxls = new Excel.ApplicationClass();
                Mylxls.Application.Workbooks.Add(true);
                Mylxls.Caption = "XX市接收安置复员退伍军人登记表";
                Mylxls.Cells[1, 1] = "XX市200  年接收安置复员退伍军人登记表";
                Mylxls.Cells[2, 1] = "XX市人民政府接待安置复员退伍军人办公室";
                Mylxls.Cells[3, 1] = "入伍所在地";
                Mylxls.Cells[3, 2] = "籍贯";
                Mylxls.Cells[3, 3] = "退伍所在";
                Mylxls.Cells[3, 11] = "退伍前";
                Mylxls.Cells[3, 21] = "工作安排情况";
                Mylxls.Cells[4, 1] = "省、市、镇(街)";
                Mylxls.Cells[4, 2] = "省、市(县)";
                Mylxls.Cells[4, 3] = "镇、街";
                Mylxls.Cells[4, 4] = "村、居委";
                Mylxls.Cells[4, 5] = "姓名";
                Mylxls.Cells[4, 6] = "性别";
                Mylxls.Cells[4, 7] = "出生年月";
                Mylxls.Cells[4, 8] = "文化程度";
                Mylxls.Cells[4, 9] = "政治面貌";
                Mylxls.Cells[4, 10] = "入伍时间";
                Mylxls.Cells[4, 11] = "部队番号";
                Mylxls.Cells[4, 12] = "奖励情况";
                Mylxls.Cells[4, 13] = "职务";
                Mylxls.Cells[4, 14] = "有何技术";
                Mylxls.Cells[4, 15] = "复退证编号(含残疾)";
                Mylxls.Cells[4, 16] = "身高(cm)";
                Mylxls.Cells[4, 17] = "联系电话";
                Mylxls.Cells[4, 18] = "安置证编号";
                Mylxls.Cells[4, 19] = "档案编号";
                Mylxls.Cells[4, 20] = "退伍类别";
                Mylxls.Cells[4, 21] = "单位名称";
                Mylxls.Cells[4, 22] = "时间";
                Mylxls.Cells[4, 23] = "档案转换";
                Mylxls.Cells[4, 24] = "备注";
           //合并单元格
                Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, 24]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[2, 1], Mylxls.Cells[2, 24]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 3], Mylxls.Cells[3, 4]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 5], Mylxls.Cells[4, 5]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 6], Mylxls.Cells[4, 6]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 7], Mylxls.Cells[4, 7]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 8], Mylxls.Cells[4, 8]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 9], Mylxls.Cells[4, 9]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 10], Mylxls.Cells[4, 10]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 15], Mylxls.Cells[4, 15]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 16], Mylxls.Cells[4, 16]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 17], Mylxls.Cells[4, 17]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 18], Mylxls.Cells[4, 18]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 19], Mylxls.Cells[4, 19]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 20], Mylxls.Cells[4, 20]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 24], Mylxls.Cells[4, 24]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 11], Mylxls.Cells[3, 14]).MergeCells = true;
                Mylxls.get_Range(Mylxls.Cells[3, 21], Mylxls.Cells[3, 23]).MergeCells = true;

 

转载于:https://www.cnblogs.com/gzlwp775/archive/2006/11/08/554621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值