Easyexcel导出带下拉框选项excel模板(解决下拉框超50个的问题)

本文介绍如何使用Easyexcel处理Excel下拉框选项超过50个导致内容不显示的问题。通过将选项存储于独立sheet,用公式关联,实现大量选项的下拉列表。同时提供了一次性导出多个模板并动态设置表头的代码示例。
摘要由CSDN通过智能技术生成

1、为了避免excel下拉框选项过多会导致内容不显示(或者生成的时候报错:String literals in formulas can't be bigger than 255 characters ASCII easyexcel),将下拉框的内容都存储在另一个新建的固定的sheet页,再通过引用公式关联单元格的下拉框内容,从而形成能够存储多数值的下拉框。

2、导出代码(这里演示的是一次性导出多个模板,采用压缩包的形式下载,并且表头是动态的):


    
    
    
  1. /**
  2. * 导出模板
  3. * @param response
  4. * @param businessViewId
  5. */
  6. @Override
  7. public void exportTemplate (HttpServletResponse response, String businessViewId) throws IOException {
  8. String[] split = businessViewId.split( ",");
  9. String zipName = "模板.zip";
  10. response.setCharacterEncoding( "utf-8");
  11. response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  12. response.setHeader( "Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(zipName, "UTF-8"));
  13. ServletOutputStream out = response.getOutputStream();
  14. ZipOutputStream zipOutputStream = new ZipOutputStream(out);
  15. for (String viewid : split) {
  16. List<BusinessField> field = baseMapper.findBusinessFieldByViewId(viewid);
  17. //根据表id查询父表id
  18. String parentId = this.findParentIdByViewId(viewid);
  19. List<BusinessField> parentFieldList = baseMapper.findBusinessFieldByViewId(parentId);
  20. //定义表头
  21. List<List<String>> headList = new ArrayList<>();
  22. //定义数据体
  23. List<List<Object>> dataList = new ArrayList<>();
  24. // 指定标红色的列
  25. List<Integer> columns = Arrays.asList();
  26. // 指定批注
  27. HashMap<Integer, String> annotationsMap = new HashMap<>();
  28. HashMap<Integer, List<String>> dropDownMap = new HashMap<>();
  29. //主表字段
  30. for ( int i = 0;i<parentFieldList.size();i++){
  31. BusinessField businessField = parentFieldList.get(i);
  32. headList.add(Lists.newArrayList(businessField.getName()));
  33. if (StringUtils.isNotBlank(businessField.getControlType())){
  34. if (businessField.getControlType().contains(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值