• WPF 导出EXCEL 方法


    是用WPF将数据导出成EXCEL其实和其他.NET应用是相通的,ASP.NET也好WINFORM也好,都是用相同的方法实现,唯一不同的是ASP.NET中可能会存在用户权限的问题,毕竟ASP.NET的执行用户是IIS指定的用户而不是默认的系统用户。

    具体实现方法如下,代码中使用完整的名称空间,便于理解

    第一步,不许引用Excel的程序集,不同于网上其他文章,我直接引用了.NET里的Microsoft.Office.interop.Excel ,而不是在Com里引用Microsoft Excel ,安装好VS08或.NET框架包以后 .NET本身就有这个程序集,不用去引用系统中安装的OFFICE的程序集,当然两种引用都是相同效果的。

    然后就可以直接编写代码了

                DataOperation dataop = new DataOperation();

     

                DataView dv = dataop.OpertaionsGet(); //获得一个dataview,这是我的程序里的方法,这里可以随便获得任何一个dataview或者其他数据集合sheet

     

                dataop.Clear();

     

     

                Microsoft.Office.Interop.Excel.ApplicationClass ac = new Microsoft.Office.Interop.Excel.ApplicationClass();

               

                Microsoft.Office.Interop.Excel.Workbook wb ; //这里千万不能使用 new 来实例对象,不然会异常

     

                Microsoft.Office.Interop.Excel.Worksheet ws ;

     

     

     

     

                wb = ac.Workbooks.Add(System.Reflection.Missing.Value);  //创建工作簿(WorkBook:即Excel文件主体本身)

                ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.Add(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);        //创建工作表(Worksheet:工作表,即Excel里的子表sheet)

     

                //设置表名

                ws.Name = "TestXlS";

     

                //将数据导入到工作表的单元格

                for (int i = 0; i < dv.Count; i++)

                {

                    for(int j=0;j<dv.Table.Columns.Count;j++)

                    ws.Cells[i+1,j+1]= dv[i][j].ToString();

                }

     

                //保存到文件

                wb.SaveAs("D://aa1.xls", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);

     

                //关闭

                wb.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);

    其实很简单,如同将一个数据表格导入到另一个数据表格一样,只需要注意Excel的方法中的参数。

    本示例中,大部分参数都采用缺省,System.Reflection.Missing.Value,在保存方法中只有第1个参数必须是完整保存路径字符串和第7个参数是XlSaveAsAccessMode枚举。

    还有一个必须要注意的地方,WorkSheet单元Cell的索引是从1开始的,不同于我们习惯的从0开始,因此在Cells二维数组中代码是ws.Cells[i+1,j+1]这个样的。

    最后,关闭工作表 ,这个容易理解,否者,保存的文件将一直被Excel进程占用。

    另外有时候数字文本会被用科学计数法显示,格式化数字为文本的方法是

    ws.Cells.NumberFormat = "@";

  • 相关阅读:
    SOCKET 3次握手
    NativeXml帮助(四) http://gaoyanan.blog.sohu.com/162725319.html
    DELPHI下的SOCK编程(转)
    socket 编程入门教程(三)TCP原理:5、TCP的三次握手(threeway handshake)
    计算机术语的英文缩写
    提高查询速度方法总结
    复制表结构的通用存储过程
    QQ盗号工具代码(破解键盘锁)
    使用VB将SQL SERVER 的脚本导出
    2007第四周 关于逛街
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2237333.html
Copyright © 2020-2023  润新知