将数据导出Excel表
开发工具与关键技术:VS、
作者:#33
撰写时间:撰写时间:2019年05月06日
在老师MVC教学中学习关于把数据导出Excel表的知识。1、控制器查询出要导出的数据,
定义实体类需要用到的字段;2、在项目中引入NPOI.dll的库,在创建Excel表格时会用到里面的方法;
public ActionResult EmployeeExcel(int employeeID) { List<EmployeeInfor> listEmployee = (from tbEmployee in myModel.PW_Employee select new EmployeeInfor { employeeID= tbEmployee.employeeID, employeeName=tbEmployee.employeeName, employeeNum=tbEmployee.employeeNum, telphone=tbEmployee.telphone, address= tbEmployee.address }).ToList(); if (employeeID > 0) { listEmployee = listEmployee.Where(m => m.employeeID == employeeID).ToList(); } |
3、查询数据之后创建Excel对象并创建Excel对象工作部——给sheet添加第一行头部标题——给每一行添加数据——设置导出后的文件名称——把文件转化为文件流将数据返回给视图。
在视图中写导出的方法,数据以Excel方式保存 。
//创建Excel对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); //创建Excel对象工作簿 NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(); 给导出的Excel设置表头 //给sheet添加第一行的头部标题 NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0); row1.CreateCell(0).SetCellValue("员工ID"); row1.CreateCell(1).SetCellValue("员工姓名"); row1.CreateCell(2).SetCellValue("员工编号"); row1.CreateCell(3).SetCellValue("联系号码"); row1.CreateCell(4).SetCellValue("家庭地址"); //设置每一列的宽度 sheet.SetColumnWidth(0, 25 * 250); sheet.SetColumnWidth(1, 25 * 250); sheet.SetColumnWidth(2, 25 * 250); sheet.SetColumnWidth(3, 25 * 250); sheet.SetColumnWidth(4, 25 * 250); //给sheet的每行添加数据(通过for循环遍历数据) for (int i = 0; i < listEmployee.Count; i++){ NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 1); row.CreateCell(0).SetCellValue(listEmployee[i].employeeID.ToString()); if (listEmployee[i].employeeName == null) { row.CreateCell(1).SetCellValue(0); }else{ row.CreateCell(1).SetCellValue(listEmployee[i].employeeName); } if (listEmployee[i].employeeNum == null) { row.CreateCell(2).SetCellValue(0); }else{ row.CreateCell(2).SetCellValue(listEmployee[i].employeeNum); } if (listEmployee[i].telphone == null) { row.CreateCell(3).SetCellValue(0); }else{ row.CreateCell(3).SetCellValue(listEmployee[i].telphone); } if (listEmployee[i].address == null) { row.CreateCell(4).SetCellValue(0); } else{ row.CreateCell(4).SetCellValue(listEmployee[i].address); } } string fileName = "员工信息一览表"+DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls"; //把Excel转化为文件流,输出 MemoryStream BookStream = new MemoryStream();//定义文件流 book.Write(BookStream);//将工作薄写入文件流 //输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度 BookStream.Seek(0, SeekOrigin.Begin); // 文件类型/文件名称/ return File(BookStream, "application/vnd.ms-excel", fileName); } |
视图的方法:
//1.9批量导出 function ImportEmployeeExcel() { var employeeID = $("#employeeID").val(); if (employeeID == "" || employeeID == null) {employeeID = 0; } if (employeeID == 0) { window.open("EmployeeExcel?employeeID=" + employeeID); } } |
点击导出按钮导出数据-另存为和最终导出数据的效果: