Excel 的NPOI导出和模板导出

Excel 导出:主要是利用了浏览器的下载功能。通过window.open(), 在一个新的窗口打开下载的路径
一、NPOI导出Excel:
.xls 后缀名 是1997~2003的版本,是Excel基本的版本,和.xlsx的版本相比,.xls的兼容性更强
.xlsx 后缀名,是比.xls更好的版本,只是代码实现相对.xls的更加复杂

导出步骤:一、查询需要导出的数据
二、创建工作簿和工作表
三、然后在工作表中创建行(注意:Excel的官方定义是先有行,再有列)
四、( 设置表标题及样式 ->设置表头及样式 )
五、将需要导出的数据放进工作表,并设置样式
六、定义内存流,输出到浏览器

1、创建工作簿:
NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook() 创建一个变量名为workbook 的工作簿
2、生成工作表:NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet();
在变量名为workbook 的工作簿中创建一个工作表sheet1 。
工作表的名称有两种写法:
(1)创建工作表的时候在CreateSheet(“工作表名称”) 的括号里定义工作表名称
(2)工作簿的变量名.SetSheetName(0, “旅客信息”), 第一个参数0是工作表的索引,代表第几个表。第二个参数就是要定义的工作表名称
3、设置表标题:
(1)创建标题行: NPOI.SS.UserModel.IRow rowTitle = sheet1.CreateRow(0);
rowTitle 标题行的变量名 CreateRow(0) 下标,定义类似于索引,下标为0 代表第一行
rowTitle.HeightInPoints = 35; 给标题行设置行高
行高:行高 HeightInPoints的单位是点,而Height的单位是1/20个点
(2) 创建单元格:NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
在标题行中创建第一个单元格 cell0 单元格的变量名
(3)给单元格设置值: string strTitle = “旅客数据”; cell0.SetCellValue(strTitle);
(4)合并单元格:sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 8));
CellRangeAddress(参数一, 参数二,参数三,参数四) 前面两个参数是横坐标,第 一个参数是从第几行开始合并,是行的索引。第二个参数是到第几行,例如从 第一行到第四行,那么第二个索引就为3
后面两个参数是枞坐标,第三个参数是从第几列开始合并。最后一个是到第几 列,例如从第一列到第9列,那么最后一个索引就为8
(5)设置单元格样式:1.设置单元格样式:
图示1.1:
Excel 的NPOI导出和模板导出
2.设置单元格字体:
图示1.2:
Excel 的NPOI导出和模板导出
4、设置表头:
(1)NPOI.SS.UserModel.IRow rowl = sheetl.CreateRow(1);
给sheet(工作表)添加第一行的头部标题,变量名为rowl
rowl.Height = 22 * 20; 给表头行设置行高
注:而Height的单位是1/20个点
(2)创建表头的单元格,并设置值
图示1.3:
Excel 的NPOI导出和模板导出
(3)创建并设置表头的样式,然后遍历表头行的单元格,给每个单元格设置样式
图示1.4:
Excel 的NPOI导出和模板导出
5、设置表格数据和样式:
(1)声明并设置单元格的样式 -> (2)遍历查询要导出的数据 -> (3)从下标(索引)为2开始创建行,有多少条数据就创建多少行 -> (4)给每一条要导出的数据都对应的设置值,值的位置要和上面定义表头的列名相对应 -> (5)然后给每一个单元格都添加上设置好的样式
图示1. 5
Excel 的NPOI导出和模板导出
设置列的宽度为自动适应(取列中最长的数据,以他的长度为标准)
图示1.6:
Excel 的NPOI导出和模板导出
5、把创建好的Excel 输出到浏览器:
(1)定义文件名称:自定义字符串+当前时刻+Excel的后缀名(.xls)
注意:文件名称的后缀名一定要和Excel 的版本相对应
图示1.7:
Excel 的NPOI导出和模板导出
(2)定义内存流,输出到浏览器(把工作簿放到内存流进行输出)
图示1.8:
Excel 的NPOI导出和模板导出
二、使用模板的方式导出Excel
首先查询需要导出的数据,将需要导出的数据用变量接收
图示2.1:
Excel 的NPOI导出和模板导出
导出步骤:一、获取模板,然后打开模板,将打开的模板转为工作簿。打开该工作簿的第 一个工作表
MapPath() 方法:将相对路径转为绝对路径。 参数:相对路径
图示2.2:
Excel 的NPOI导出和模板导出
三、声明并设置工作簿的样式
图示2.3:Excel 的NPOI导出和模板导出
四、设置工作表的标题
图示2.4:
Excel 的NPOI导出和模板导出
五、往工作表填充数据,并设置单元格的样式。单元格的样式刚才在上面的代码中声明并 设置了,现在只需要调用样式的变量即可
图示2.5:
Excel 的NPOI导出和模板导出
六、设置文件的名称,然后定义内存流并将工作簿写入内存流,最后进行输出
图示2.6:
Excel 的NPOI导出和模板导出
总结:通过模板导出的方法整体和上面NPOI导出大同小异。只是通过模板导出,代码量相 对比NPOI要少