该文为关于文件方面毕业论文的格式范文,与基于NPOI导出Excel文件的与实现相关论文参考文献格式,可作为论文格式专业文件论文写作研究的大学硕士与本科毕业论文开题报告范文和职称论文参考文献资料。免费下载教你怎么写文件及程序及对象方面的优秀学术论文范文。
[摘 要] 在基于B/S结构进行开发的应用系统中,“文件导出”是一项很重要的功能,利用它可以导出相关的业务数据,以便进行资料保存或者不同业务间的数据交互.本文就如何利用NPOI导出一个真正的Excel文件进行研究与分析.
[关 键 词 ] NPOI; 导出; Excel文件
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2013 . 15. 061
[中图分类号] TP294 [文献标识码] A [文章编号] 1673 - 0194(2013)15- 0093- 02
1.导出Excel文件的传统方法
在进行Excel文件导出时,传统的方法一般都是利用Excel程序自身能够识别网页中的表格内容这种特性来实现的.当Web服务程序在响应客户端浏览请求时,先输出MIME类型,然后输出表格等HTML内容.比如(以C #代码为例):
Response.Clear();
Response.Buffer 等于 false;
Response.AddHeader("Content-Disposition","attachment;filename等于test.xls");
Response.ContentType 等于"application/ms-excel";
StringWriter sw等于 new StringWriter();
HtmlTextWriter htw 等于 new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
其中GridView1为Web服务端的GridView控件的ID.利用此方法的前提是需要重载VerifyRenderingInServerForm函数,取消其函数内容.
通过这种方法,可以将Web页面中的表格内容以HTML代码的方式输出到客户端浏览器,并提示保存名为test.xls的Excel文件.用记事本打开该文件,会发现其内容是HTML标记的网页文件,并非真正的二进制Excel文件.
2.Excel文件导出的其他几种可行方法
想要导出真正的二进制Excel文件,一是可以利用Excel应用程序对象创建Excel文件,然后输出二进制流到客户端浏览器进行保存;二是可以利用第三方的Excel类库,比如MyXlS、Koogra和NPOI等,直接生成二进制的Excel文件,然后输出二进制流到客户端浏览器进行保存.
利用Excel程序对象创建Excel文件首先要添加Microsoft.Office.Interop.Excel引用,并在代码中添加引用using Microsoft.Office.Interop.Excel ,然后新建一个ApplicationClass 实例,通过Excel应用程序实例进行相关的Excel文件操作,将创建的临时Excel文件读到内存流中,然后以二进制方式输出,并在最后将此实例释放.
使用Excel应用程序对象创建Excel文件,需要在服务器端安装Office,而且还需要设定权限允许.NET访问COM+,并且在服务器端会看到Excel程序窗口一闪而过,当然可以让程序窗口不显示,但是任务管理器里还是会有Excel程序的进程,如果多个用户同时请求导出Excel文件,会产生多个Excel程序的进程,消耗过多的服务器资源,可能导致服务器宕机.另外Excel程序会把只包含数字的列进行类型转换,原本是文本型的,Excel程序会将其转成数值型,比如000123会变成123.如果内容以“等于”开头,Excel程序还会把它当成公式执行,然后报错等,不便于原始格式Excel的生成.
使用第三方Excel类库的优势就是不需要在服务器上安装微软的Office,避免版权问题,而且使用起来比Office PIA的API更加方便,更人性化,但几种Excel类库各有千秋.比如MyXlS 是一个免费开源的类库,侧重于Excel的输出.可以设置到单个单元格,但读取功能很弱.Koogra与MyXlS恰恰相反,是一个非常好用Excel读取类库,其最新版可以支持Excel 2007格式,可是在测试过程中发现Koogra读不了MyXlS输出的XLS文件.而NPOI不仅支持导出Excel,还支持导入Excel,并能“理解”OLE2文档结构.对于Excel文件来讲,NPOI不单是能创建Excel文件,而且能更深入地执行Excel文件的各种操作,比如支持单元格的格式设置、合并单元格、对齐设置、使用边框、字体设置、背景和纹理设置、宽度和高度设置等,还能使用Excel公式、创建图形、设置打印机属性、锁定列、设置等多项操作.
3.利用NPOI导出Excel文件的实现
基于上述分析,我们使用NPOI类库实现Excel文件的导出.该类库是POI的.NET版本.POI是一套用Ja写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97、Office 2003版本的文件.最新的NPOI有.Net 2.0、3.5和4.0三个版本,支持Excel、Word的97、2003和2007格式.
利用NPOI实现Excel文件导出的步骤:
3.1 添加NPOI的引用
先在项目工程里引用NPOI.DLL,然后在代码开始处添加引用:
using NPOI.SS.Util;
using NPOI.SS.UserModel; using NPOI.HS.UserModel;
3.2 创建工作簿
HSWorkbook hsworkbook 等于 new HSWorkbook();
Sheet sheet1等于 hsworkbook.CreateSheet(title);//创建标题为title内容的工作簿
3.3 设置单元格样式
等等
Row row1 等于 sheet1.CreateRow(0);//创建行对象
Cell cell1 等于 row1.CreateCell(0);//根据行对象创建单元格对象
CellStyle style 等于 hsworkbook.CreateCellStyle();//创建样式对象
Font font 等于 hsworkbook.CreateFont();//创建字体对象
style.Alignment 等于 HorizontalAlignment.CENTER;//设置水平居中
style.VerticalAlignment 等于 VerticalAlignment.CENTER;//设置垂直居中
font.FontHeight 等于 18 * 20;//设置字体
style.SetFont(font);//设置样式的字体
cell1.CellStyle 等于 style;//设置单元格的样式
等等
3.4 合并相关单元格
等等
CellRangeAddress region 等于 new CellRangeAddress(0, 0, 0, 11);//设置合并区域为0行0列到0行11列
sheet1.AddMergedRegion(region);//为工作簿sheet1添加合并区域
等等
3.5 单元格赋值
等等
string title 等于 "2013年度教学任务分配表";
cell1.SetCellValue(title);//为单元格赋值
等等
3.6 导出Excel文件
等等
MemoryStream s 等于 new MemoryStream();
hsworkbook.Write(s);
hsworkbook.Dispose();
Response.Clear();
Response.Buffer 等于 false;
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition","attachment;filename等于" +Server.UrlEncode("教学任务分配表.xls"));
Response.BinaryWrite(s.ToArray());
s.Dispose();
Response.End();