数据的导出
在页面中定义导出的方法
获取查询条件,将查询条件传到控制器,根据条件查询出需要导出的数据
序列化搜索条件部分
导出数据
window . open(url+序列化搜索的部分条件 );
可以根据筛选条件导出要导出的数据
先查询出要导出的数据
在控制器中先定义一个方法,方法里面接收一些要查询的参数
联表查询出数据,再进行条件筛选
将需要导出的数据写入到Excel中
构建Excel
- 创建工作簿
IWorkbook workbook = new HSSFWorkbook();
- 创建工作表
ISheet sheet = workbook.CreateSheet("工作表名称");
- 标题行
- 创建标题行 CreateRow(行的索引值)
IRow rowTitle = sheet.CreateRow(0);
- 创建单元格
ICell cell0 = rowTitle.CreateCell(0);
- 设置单元格内容
cell0.SetCellValue("内容");
- 设置标题行跨列显示(坐标点)
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(, , ,));
例:(0, 0, 0, 9)表示从第1行第1列开始合并到第1行第10列结束
- 设置样式(可设置可不设置)
样式设置完之后需要将样式给到单元格
单元格名称 . CellStyle=样式名称
例:cell0.CellStyle = cellStyle_Title;
- 表头行
- 创建表头行
NPOI.SS.UserModel.IRow rowHeader = sheet.CreateRow(行的索引值);
设置字段
CreateCell创建单元格 SetCellValue设置值
例:rowHeader.CreateCell(0).SetCellValue("序号");
rowHeader.CreateCell(1).SetCellValue("学号");
rowHeader.CreateCell(2).SetCellValue("姓名");
- 设置表头行样式
给表头行单元格设置好样式 循环给到每一个单元格
例:
- 数据行
- 样式
- 遍历数据 把查询出来的数据一条一条的放到Excel表格中
例:for (int i = 0; i < listStudent.Count; i++){
说明:i < listStudent.Count 查询出来多少条数据就遍历多少次
在每次遍历的时候就创建一个行
IRow row = sheet.CreateRow(2 + i);因为标题和表头已经占了两行,所以2+i
row.HeightInPoints = 22; HeightInPoints设置行高
创建列 并设置值
例:row.CreateCell(0).SetCellValue(i + 1);//序号
row.CreateCell(1).SetCellValue(listStudent[i].StudentNumber)
row.CreateCell(2).SetCellValue(listStudent[i].StudentName);
说明 :listStudent[i]第i个数据里面取出来的StudentNumber
给每个单元格添加样式
}
- 设置列宽为自动适应
把创建好的Excel输出到浏览器
1、给输出的文件定义名称
string fileName = "考生信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
- 把Excel转化为流输出
- 定义流
MemoryStream BookStream = new MemoryStream();
- 将工作簿写入流
workbook.Write(BookStream);
- 输出之前调用Seek(偏移量,游标位置)将当前流中的位置设置为指定值
BookStream.Seek(0, SeekOrigin.Begin);
- 最后进行数据返回
例:return File(BookStream, "application/vnd.ms-excel", fileName);
说明:返回文件用File(文件,文件类型,文件名称)
最后给导出按钮调用导出的方法
点击导出按钮就会生成一个Excel表
点击Excel表就能打开看到导出的数据
样式的设置
创建单元格的样式,先给一个单元格设置样式,再循环给到每个单元格
需要先声明一个样式
例:ICellStyle cellStyle_header = workbook.CreateCellStyle();
水平居中
例:cellStyle_header.Alignment = HorizontalAlignment.CENTER;
垂直居中
例:cellStyle_header.VerticalAlignment = VerticalAlignment.CENTER;
设置背景填充效果
例:cellStyle_header.FillPattern = FillPatternType.SOLID_FOREGROUND;
设置背景填充颜色
例:cellStyle_header.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.AQUA.index;
设置边框线
例:cellStyle_header.BorderLeft = CellBorderType.THIN; 左边框
cellStyle_header.BorderTop = CellBorderType.THIN; 上边框
cellStyle_header.BorderRight = CellBorderType.THIN; 右边框
cellStyle_header.BorderBottom = CellBorderType.THIN; 下边框
设置字体
先声明字体
IFont font_header = workbook.CreateFont();
字体大小
例:font_header.FontHeightInPoints = 10;
加粗
例:font_Title.Boldweight = (short)FontBoldWeight.BOLD;
添加字体颜色
例:font_title.Color = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;