数据的导出

数据的导出

在页面中定义导出的方法

获取查询条件,将查询条件传到控制器,根据条件查询出需要导出的数据

序列化搜索条件部分

导出数据

              window . open(url+序列化搜索的部分条件 );

可以根据筛选条件导出要导出的数据

先查询出要导出的数据

在控制器中先定义一个方法,方法里面接收一些要查询的参数

联表查询出数据,再进行条件筛选

将需要导出的数据写入到Excel中

构建Excel

  • 创建工作簿

IWorkbook workbook = new HSSFWorkbook();

  • 创建工作表

ISheet sheet = workbook.CreateSheet("工作表名称");

  • 标题行
  1. 创建标题行 CreateRow(行的索引值)

IRow rowTitle = sheet.CreateRow(0);

  1. 创建单元格

ICell cell0 = rowTitle.CreateCell(0);

  1. 设置单元格内容

cell0.SetCellValue("内容");

  1. 设置标题行跨列显示(坐标点)

sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(, , ,));

例:(0, 0, 0, 9)表示从第1行第1列开始合并到第1行第10列结束

  1. 设置样式(可设置可不设置)

样式设置完之后需要将样式给到单元格

单元格名称 . CellStyle=样式名称

:cell0.CellStyle = cellStyle_Title;

  • 表头行
  1. 创建表头行

NPOI.SS.UserModel.IRow rowHeader = sheet.CreateRow(行的索引值);

设置字段

CreateCell创建单元格  SetCellValue设置值

:rowHeader.CreateCell(0).SetCellValue("序号");

rowHeader.CreateCell(1).SetCellValue("学号");

rowHeader.CreateCell(2).SetCellValue("姓名");

  1. 设置表头行样式

给表头行单元格设置好样式  循环给到每一个单元格

 

  • 数据行
  1. 样式

  1. 遍历数据 把查询出来的数据一条一条的放到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";

  1. 把Excel转化为流输出
  1. 定义流

MemoryStream BookStream = new MemoryStream();

  1. 将工作簿写入流

workbook.Write(BookStream);

  1. 输出之前调用Seek(偏移量,游标位置)将当前流中的位置设置为指定值

BookStream.Seek(0, SeekOrigin.Begin);

  1. 最后进行数据返回

: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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值