Excel表的导出数据

思路分析:

引用插件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,请根据个人开发更改。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值