数据导出
在编程中,我们对数据只是在页面进行查询、修改,但如果我要把我的数据输出到Excel表格那要怎么写呢。
第一种:
利用layui这个插件的toolbar工具条
开启之后就可以进行数据的导出和页面的打印了。
这个用起来简单方便。
第二种:
添加NPOI这个引用,从而达到数据导出的代码。
在写代码前,你要清楚,Excel表格的构造,从而去写代码,这样你就会发现代码不难,很容易理解。
Excel表格(俗称工作簿)的构成:
一个工作簿是可以有多个工作表组成。
而工作表又有表头、和数据组成。
所有在导出时我们就有了清楚的思路: 先创建工作簿 在建工作表 在设置工作表的表头 数据的导入(是将数据导入到创建的Excel表格) 再写入文件流 再以文件的形式返回。
思路讲完后,下面我们来看代码:
第一步:要先添加NPOI这个引用。
public ActionResult ExportToExcel()
{
//这是要导出的数据
List<PW_Employee> listEmployee = myModel.PW_Employee.Select(a => a).ToList();
//创建工作簿Excel
//要添加 NPOI 这个引用
HSSFWorkbook excelBook = new HSSFWorkbook();
//创建工作表
//为工作簿创建工作表命名
NPOI.SS.UserModel.ISheet sheetl = excelBook.CreateSheet("员工信息");
//编写工作表
//(1)表头
//创建表头行设置字段
//创建第一行
NPOI.SS.UserModel.IRow rowl = sheetl.CreateRow(0);
//创建列
rowl.CreateCell(0).SetCellValue("员工编号");
rowl.CreateCell(1).SetCellValue("姓名");
rowl.CreateCell(2).SetCellValue("联系电话");
rowl.CreateCell(3).SetCellValue("家庭地址");
//(2)数据:listEmployee
//创建数据行
for (int i = 0; i < listEmployee.Count(); i++)
{
//创建行
NPOI.SS.UserModel.IRow rowTemp = sheetl.CreateRow(i + 1);
rowTemp.CreateCell(0).SetCellValue(listEmployee[i].employeeNum);
rowTemp.CreateCell(1).SetCellValue(listEmployee[i].employeeName);
rowTemp.CreateCell(2).SetCellValue(listEmployee[i].telphone);
rowTemp.CreateCell(3).SetCellValue(listEmployee[i].address);
}
//文件名
var fileName = "员工信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
//将Excel表格转化为流,输出
//创建文件流
MemoryStream bookStream = new MemoryStream();
//文件写入流(向流中写入字节序列)
excelBook.Write(bookStream);
//输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
bookStream.Seek(0, SeekOrigin.Begin);
return File(bookStream, "application/vnd.ms-excel", fileName);
}
这就是我数据导出的写法,和总结,有什么不对的请指出。