数据的导出
Excel 利用了浏览器的文件下载
NPOI导出excel
创建工作簿
NPOI.HSSF.UserModel.HSSFWorkbook
创建工作表
NPOI.SS.UserModel.ISheet
设置表标题
创建行
NPOI.SS.UserModel.IRow 行rowTitle
rowTitle.HeightInPoints 设置行高
创建单元格 给单元格设置值
设置单元格的样式
设置表头
创建一行 索引
设置行高 rowl.Height=22*20
创建单元格 并设置值
rowl.CreateCell(0).SetCellValue(“×ד)
创建表头样式
遍历查询到的数据,设置表格数据
创建数据内部部分 单元格样式
声明样式
Alignment水平居中 VerticalAlignment 垂直居中
设置边框线为实线
cellstyle_value.BorderLeft/Top/Right/Bottom = NPOI.SS.UserModel.BorderStyle.Thin;
遍历数据,创建数据部分行列
创建行
给单元格添加样式
设置列宽为自动适应
把创建好的Excel输出到浏览器
使用模板方式导出Excel
//读取模板
获取模板的路径
string templateFilePath = Server.MapPath("~/Document/ARDataTemplate.xls");
判断文件是否存在
if (!System.IO.File.Exists(templateFilePath))
{
return Content("导出失败,无法找到导出模板,请联系网站管理人员");
}
使用NPOI打开模板Excel
使用文件打开模板文件
FileStream fileSteam = new FileStream(templateFilePath, FileMode.Open);
把文件流转为工作簿
NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new NPOI.HSSF.UserModel.HSSFWorkbook(fileSteam);
打开模板所在第一个工作表
NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0);
NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle();
设置标题
往模板中填充数据
设置数据单元格的样式
水平居中 Alignment 垂直居中 VerticalAlignment
设置边框为实线
style.BorderLeft/Top/Right/Bottom = NPOI.SS.UserModel.BorderStyle.Thin;
设置行高 row.Height
设置单元格数据
row.CreateCell(0).SetCellValue(i+1)
row.CreateCell(1).SetCellValue(list[i].””)
row.CreateCell(1).SetCellValue(list[i].””.ToString())
设置单元格样式
for (int j = 0; j < row.Cells.Count; j++)
{
row.GetCell(j).CellStyle = style;
}
index++;
以流的方式返回
string fileName = "" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
把Excel转化为流输出
MemoryStream BookStream = new MemoryStream();//定义内存流
excelBookTemplate.Write(BookStream);//将工作薄写入内存流
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度
return File(BookStream, "application/vnd.ms-excel", fileName); // 文件类型/文件名称/