导出

导出思路:
第一步:引用NPOI插件到项目中
第二步:筛选导出数据(表格数据查询)
第三步:获取工作簿、工作表
第四步:构建表头(这里表头需要人为构建)
导出数据
第五步:保存导出的Excel文件.(使用IO流)

导出分俩种
(1)在已有的模板上导出数据;(前提:必须要提前构建好模板)
(2)直接导出数据

第一种:
先引用NPOI插件
使用读取模板的方式导出数据:开启一个方法,筛选出导出的数据,例如:

导出
导出

查询出我们要导出的数据
首先判断创建好的模板存不存在,因为这种方法是我们事先创建好模板的,如果不存在你说导哪里去?
导出

分清楚:
模板:就像本子,如果你想写东西,你要看看你有没有本子
工作簿:就像一个没打开的本子,你可以在里面写东西,但是里面有很多页数,看你想在哪一页写数据
工作表:一个工作簿里面有多个工作表

如果模板存在,就 使用NPOI打开模板Excell
FileStream templateStream = System.IO.File.Open(templatePath, FileMode.Open);//打开templatePath放到templateStream
//使用NPOI打开模板Excel 得到一个工作簿
NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new NPOI.HSSF.UserModel.HSSFWorkbook(templateStream);
//=打开模板所在第一个工作表,你要准确在哪一页写数据
NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0);

当你确定在哪个工作表导出数据,那么你可以在工作表上添加单元格样式
但是给数据添加单元格样式之前,你必须构建单元格样式
//构建单元格样式
NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle();
//=5.1-设置数据单元格的样式
//水平垂直居中对齐
style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平方向居中
style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直方向居中
//设置上下左右边框为实线
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

导出的表格要有明显的标志,不然导出的表格就会一模一样分不清楚,所以我们用日期区分

导出

再以流的方式进行返回,
//把Excel转化为流,输出
MemoryStream BookStream = new MemoryStream();//定义一个内存流
excelBookTemplate.Write(BookStream);//将工作薄写入内存流
BookStream.Seek(0, SeekOrigin.Begin);
//输出之前一定调用Seek,0是偏移量,SeekOrigin.Begin游标位置)方法:获取文件流的长度保证全部数据导出

最后用NPOI的方式进行返回
//他这里要返回三个数据( 发送的数据流是什么,发送的文件是什么格式的,你将要保存下来的文件名称)
return File(BookStream, “application/vnd.ms-excel”, fileName);