将数据导出Excel表

将数据导出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); }

}

点击导出按钮导出数据-另存为和最终导出数据的效果:

 

 

猜你喜欢

转载自blog.csdn.net/weixin_44484621/article/details/89949708