前言】:不久前收到一个导出放盘信息自定义字段历史跟踪Log的任务,以方便客户月底根据Log记录来判断哪个置业顾问对房源信息贡献最大,并以此发放奖金。本篇将同时结合同事自定义Contact Excel导出时的经验,来总结归纳在使用Salesforce导出Excel时常遇见的那些问题和对应的解决方案,供参考。

常见问题】:
A. Collection size exceeds maximum size of 1,000;

B. Response size exceeded 15MB orgnization limit;

我们发现,这两个问题都是由于数据量过大造成的,一个是集合本身的Size容量问题,一个是数据Size容量的问题;
当然Excel不同供应商对于最大的行限制也是有要求的,就目前使用的工具来看,WPS最多6w+,Office可以没试过极限,27w+是支持的。sf官方是这样介绍的:
Common tool-imposed limits are 1,048,576 rows by 16,384 columns, or 65,536 rows by 256 columns.

解决方案】:
针对A,我们可以根据业务数据实际的峰值来选择一下方案:
方案一:在apex:page标签加readonly="true"属性,这样collection的限制会被扩展到1w,最简单;

参考资料:

方案二:我们也可以在Collection 1000的限制内通过List<List<Object>>的形式来扩展到1000*1000行(10w行);
这里提供两种写法,供参考:

List<List<Contact>> bigConList = new List<List<Contact>>();
List<Contact> conList = database.query(soql);if(conList.size() < 1000) {bigConList.add(conList);
}if(bigConList.size() == 0) {Integer i = 0;List<Contact> item = List<Contact>();for(Contact con : conList) {if(i <= 1000) {item.add(con);}else {bigConList.add(item);item = new List<Contact>(con);i = 0;}i++;}
}
List<List<Contact>> bigConList = new List<List<Contact>>();
List<Contact> conList = database.query(soql);if(conList.size() > 1000) {List<Contact> item = new List<Contact>();Integer i = 0;for(Contact con : conList) {i++;item.add(con);if(item.size() == 1000) {bigConList.add(item);item = new List<Contact>();}else if(conList.size() == i) {bigConList.add(item);}}
}else {bigConList.add(conList);
}

思考假如把方案一和方案二结合在一起,理论上应该可以扩展到10000*10000,此处待测试。

针对B,我们可以使用sf标准的report导出功能来实现,因为When exporting a report in Salesforce Classic or in Lightning Experience as Details Only, you can export an unlimited number of report rows and columns.

【参考资料】:Export a Report

盘点Salesforce导出Excel那点坑相关推荐

  1. html导出excel 内存不足,web导出excel那些坑

    背景介绍 昨天在一个前端的微信公众号看到一篇文章介绍导出cvs文件的,想想之前做导出excel的踩过的坑,心想记录一下,或许可以帮助别人吧! 需求很简单,在某个报表页面需要把table导出excel. ...

  2. 盘点我用过的导出Excel的方法

    在做项目的过程中,基本上都会和Excel打交道.这不仅仅是用户习惯,还因为Excel强大的二次数据处理能力. 这些年来,导出Excel的方式也用过很多种,在这里盘点一下,做个记录. 1.利用HttpR ...

  3. js vue 设置excel单元格样式_vue项目使用xlsx-style实现前端导出Excel样式修改(添加标题,边框等),并且上传npm踩坑记录...

    前段时间,我们项目提出一个前端导出Excel表格的需求, 这个很简单,利用xlsx,file-saver很容易实现(网上很多教程). 后来需要加入标题,标题居中显示,加入边框等等样式需求,这就给我很多 ...

  4. POI导出Excel设置背景色踩坑,解决背景色全黑(无效)的问题及指定列添加背景色,自定义颜色

    POI导出Excel设置背景色踩坑,解决背景色全黑的问题及指定列添加背景色,自定义颜色 一.自定义颜色 二.背景色全黑(无效)的问题解决![在这里插入图片描述](https://img-blog.cs ...

  5. Vue-element 引用FileSaver xlsx 导出excel踩坑

    一大早上也是有被自己蠢到,就说为啥一直导出按钮没反应原来我只引用了这个. 其实还需要再引用一个 然后还得设置全局变量 怪不得我的按钮没反应,无语辽. 最后附上导出excel代码

  6. 踩坑:EasyExcel导出excel导出数据为空

    我再java代码中导出excel 导出数据为空如下图 问题探究 经过断点排查数据 发现数据取出来了 那么问题就不在取数据而在数据写入部分 经过排查翻阅博客发现了这么一句话 读写反射对象用到了Cglib ...

  7. EasyPoi导出excel多Sheet遇到的坑

    问题描述 1.项目中需要多shee导出,需要动态生成列. 2.我的方法是在执行ExcelExportUtil.exportExcel之后,插入自定义的列. 3.发现在执行ExcelExportUtil ...

  8. mybatis plus 导出sql_springBoot+mybatisPlus+hutool 实现输入sql导出 excel表格

    支持pom包 com.baomidou mybatis-plus-boot-starter 3.1.1 cn.hutool hutool-all 4.5.10 org.apache.poi poi-o ...

  9. JXLS导出Excel(模板导出)

    1.导包 在pom.xml中加入依赖如下: <dependency><groupId>org.jxls</groupId><artifactId>jxl ...

最新文章

  1. 36晋级12第四场:评委弃权 无人晋级
  2. Java8中的流操作-基本使用性能测试
  3. Android自定义控件实现九宫格解锁
  4. python打乱list_超实用!每 30 秒学会一个 Python 小技巧,GitHub 标星 5300!
  5. linux --- 进阶指令
  6. OpenCV修养(三)——图像处理(上)
  7. CoreAnimation编程指南(八)事务 转自:http://www.dreamingwish.com/
  8. POJ - 3494
  9. 【洛谷3368】树状数组模版题(区间修改,单点查询)
  10. C#如何连接带密码的access数据库?
  11. 群体智能优化算法之蝙蝠算法(Bat Algorithm,BA)
  12. 微型计算机原理指令改错题,微机原理期末考试题
  13. 手摸手。完成一个H5 抽奖功能
  14. Spark源码系列(二)RDD详解 - 岑玉海
  15. 由闷骚书生与假正经小姐的古典爱情故事说起
  16. 钉钉-日程与任务管理
  17. SXSSFWorkbook 表格内换行
  18. PDF Tools - PDF增强工具
  19. 达梦数据库sql优化实践2
  20. 定位——胖鱼HTML/css入门第八天

热门文章

  1. 【掌控板教程】网络编程——古语天地学习器
  2. MySQL数据库迁移瀚高数据库
  3. VS+QT双击ui文件用Designer打开时出现未指定错误/无法打开XX.ui文件
  4. java随机生成验证码图片
  5. adb查看实时资源占用情况
  6. 上海AWE开幕:3M全球首发空气净化战略新品;恒洁展示智能双Q一体机;法国欧凯提供微晶玻璃创新解决方案 | 美通企业日报...
  7. 今日份弱智代码2022.10.9
  8. 微信跳转手机浏览器下载app和访问指定页面无法自动跳转的解决方案
  9. Linux下nano编辑器的常用快捷键
  10. eTerm系统连接报10001错误及中文乱码