Excel表的导出数据

来源:互联网 发布:sql语句修改字段值 编辑:程序博客网 时间:2024/06/18 07:15

思路分析:

引用插件NOPI

创建EXCEL对象,并添加相应的工作表、

将需要导入EXCEL表中的数据写入EXCEL对象中,将其放入内存流中,

再转为File的application/vnd.ms-excel格式发到客户端

代码详解:

  1. 生成数据源

  2.             List<Users> lis = new List<Users>()            {                new Users(){ID=1,Name="小明",ClassName="1509B1",Six=1},                new Users(){ID=2,Name="小羊",ClassName="1509B2",Six=0},                new Users(){ID=3,Name="小鱼",ClassName="1509B3",Six=1},            };
  3. 创建Excel文件对象

  4.  //创建Excel文件对象(工作簿)            NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
  5. 创建工作表

  6.  //创建一个新的工作表            NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("人员信息表");
  7. 添加工作表的标题(每一个工作表的最上方一行用于写我们数据的标题行)

  8.             //添加标题            NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);            row1.CreateCell(0).SetCellValue("编号");            row1.CreateCell(1).SetCellValue("姓名");            row1.CreateCell(2).SetCellValue("班级");            row1.CreateCell(3).SetCellValue("性别");
  9. 填充数据

  10.             //填充数据            for (int i = 0; i < lis.Count; i++)            {                //添加标题                NPOI.SS.UserModel.IRow rows = sheet1.CreateRow(i+1);
    //在当前行加一,创建新行,有时候会发现导出的数据缺失,有可能就是这里的问题,反正我是在这出的错
    rows.CreateCell(0).SetCellValue(lis[i].ID); rows.CreateCell(1).SetCellValue(lis[i].Name); rows.CreateCell(2).SetCellValue(lis[i].ClassName); rows.CreateCell(3).SetCellValue(lis[i].Six); }
  11. 写入内存流(ms.Seek(起始位置,参考位置))

  12.             //写入内存流            System.IO.MemoryStream ms = new MemoryStream();            book.Write(ms);            ms.Seek(0, SeekOrigin.Begin);
  13. 转换为file并返回

  14.  return File(ms, "application/vnd.ms-excel", "人员信息表.xls");
  15. 因为我的开发场景是在MVC中使用,所以方法的返回类型为FileResult,请根据个人开发更改。