EPPlus导出大量数据

在将数据导出Excel的时候NPOI因创建太多单元格对象,导致内存溢出。大概20列的数据,4W行就会出现,故另寻它法进行处理。原本是用文件流来进行,但是会导致Excel文件损坏,后来找到EPPlus来进行导出操作。当然可能是本人能力有限,用NPOI不会导出大量数据,文件流操作也没有细研究。

            FileInfo file = new FileInfo(Server.MapPath("/Resource/OutFile/1.xlsx"));
            using (ExcelPackage package = new ExcelPackage())
            {
                //创建Sheet
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test");
                for (int i = 1; i < data.Count; i++)
                {

                    //也可以直接用指定单元格进行复制

                    //worksheet.Cells["A1"].Value="";
                    //直接指定行列数进行赋值
                    worksheet.Cells[i, 1].Value = data[i].AccumMonths;
                }
                package.SaveAs(file);
            }

 

注意:EPPlus所有的行和列的索引是从1开始的,如果写0会报行索引不在范围什么的。

注意:踩了一个坑,在测试的时候没有问题,放到生产服务器上在导出时报错,Error saving file xxx,后来仔细对比下服务器的差别,配置Everyone权限就好了。

此方式可以导出数据20列大概可以导出20W,具体没有试验,我一个Excel存10W数据,然后存放不同的Excel进行的。毕竟查询数据库时候,数据传输大也会比较慢。索性分批,然后压缩打包下载。

转载于:https://my.oschina.net/uwith/blog/852563

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值