WPF 导出EXCEL 方法

摘要:
使用WPF将数据导出到EXCEL实际上与其他相同。NET应用程序。ASP.NET或WINFORM的实现方式相同。唯一的区别是ASP.NET中可能存在用户权限。毕竟,ASP.NET的执行用户是IIS指定的用户,而不是默认系统用户。在此示例中,大多数参数使用默认值System.Reflection.Missing.Value。在save方法中,只有第一个参数必须是完整的保存路径字符串,第七个参数必须为XlSaveAsAccessMode枚举。最后,关闭易于理解的工作表。否则,保存的文件将始终被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 = newDataOperation();

 

            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 = "@";

免责声明:文章转载自《WPF 导出EXCEL 方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL root修改普通用户密码及Mysql 修改root密码百度地图实现鼠标绘制多边形并获取所有点坐标下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

利用C#的反射机制动态调用DLL类库

最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢啦! 好,在这之前我先把反射所需要使用的几个类给大家列一下: 1、使用Assembly类定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型...

WPF数据模板样式选择器

在使用数据模板样式选择器时,不能设置ItemContainerStyle的属性值,如果设置了该值,那么数据模板样式选择器会失去作用。 在使用数据模板样式选择器时,首先要创建数据模板样式选择器对象,此对象要重写StyleSelector基类的SelectStyle方法,并在方法中返回相应的样式,CS代码如下: public class ListViewI...

java如何获取当前时间以及如何进行格式化?

起因:写代码的时候经常会用到获取当前时间戳和日期,现总结如下 public void testDate() { //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 Date date = new Date(); String dateString = d...

项目笔记---WPF之Metro风格UI

写在前面   作为新年开篇的文章,当然要选择比较“Cool”的东西来分享,这自然落到了WPF身上,WPF技术自身可塑性非常强,其强大的绘图技术以及XAML技术比WinForm而言有本质的飞跃。   切入正题,本文来自于一个项目的Demo演示版,当然为了做到“Cool”我选择了WPF作为项目的概念版进行演示,所用到包括大名鼎鼎的MahApps.Metro以及...

WkHtmlToPdf 生成 PDF

1. 首先去http://wkhtmltopdf.org/downloads.html 下载最新版本的安装包 2. 执行安装完成 3. CMD 命令行运行wkhtmltopdf.exe程序生成PDF C:Program Fileswkhtmltopdfin>wkhtmltopdf.exe --orientation Landscape --javas...

python mock接口返回数据(转载)

Python mock  在测试过程中,为了更好地展开单元测试,mock一些数据跟对象在所难免,下面讲一下python的mock的简单用法。 关于python mock,网上有很多资料,这里不会讲的特别深,但一定会是实用为主,看完后,至少可以让你知道mock是怎样用的。 1.mock对象方法中的返回数据: 我们经常会需要这样的场景,a系统跟b系统联调,b...