easypoi通过模板导出多sheet的excel表格

4 篇文章 0 订阅
3 篇文章 0 订阅
本文介绍了如何使用Easypoi-web库在SpringMVC中创建一个HTTP接口,通过TemplateExportParams和ExcelExportUtil将数据导出到包含两个sheet(普通字段和列表)的Excel文件。
摘要由CSDN通过智能技术生成

需要引入的依赖

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-web</artifactId>
    <version>4.4.0</version>
</dependency>

excel模板

第一个sheet

第二个sheet(列表)

{{fe 代表循环list字段, t.字段}}

代码

/**
  * 导出多sheet的excel
  */
@PostMapping("/exportMultipleSheetExcel")
public void exportMultipleSheetExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
    Map<Integer, Map<String, Object>> map = getExportMap();
    TemplateExportParams template = new TemplateExportParams("C:\\Users\\Admin\\Desktop\\test.xlsx", map.keySet().toArray(new Integer[]{}));
    Workbook workbook = ExcelExportUtil.exportExcel(map, template);
    workbook.write(response.getOutputStream());
}

获取数据

private Map<Integer, Map<String, Object>> getExportMap() {
        Map<Integer, Map<String, Object>> map = new HashMap<>(3);
        // 普通字段sheet
        Map<String, Object> oneMap = new HashMap<>(15);
        oneMap.put("olTotal", "118");
        oneMap.put("ofTotal", "2");
        oneMap.put("totalFraction", "2000");
        oneMap.put("maxFraction", "100");
        oneMap.put("minFraction", "68");
        oneMap.put("olRatio", "98%");
        oneMap.put("ofRatio", "2%");
        oneMap.put("esCount", "120");
        oneMap.put("esRatio", "100%");
        oneMap.put("passingRate", "100%");
        oneMap.put("date", DateUtil.getCurrentDate(DateUtil.DEFAULT_DATE_PATTERN));
        map.put(0, oneMap);
        // 列表sheet
        Map<String, Object> twoMap = new HashMap<>(2);
        List<Map<String, Object>> twoList = new ArrayList<>(3);
        Map<String, Object> twoSubMap = new HashMap<>(4);
        twoSubMap.put("num", "1");
        twoSubMap.put("number", "20230001");
        twoSubMap.put("name", "张三");
        twoList.add(twoSubMap);
        Map<String, Object> twoSubMap2 = new HashMap<>(4);
        twoSubMap2.put("num", "2");
        twoSubMap2.put("number", "20230002");
        twoSubMap2.put("name", "李四");
        twoList.add(twoSubMap2);
        Map<String, Object> twoSubMap3 = new HashMap<>(4);
        twoSubMap3.put("num", "3");
        twoSubMap3.put("number", "20230001");
        twoSubMap3.put("name", "王五");
        twoList.add(twoSubMap3);
        twoMap.put("list", twoList);
        map.put(1, twoMap);
        return map;
    }

导出示例

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
easypoi通过模板导出excel的步骤如下: 1. 准备数据:首先,需要准备好要填充到模板中的数据。可以用一个list中的map来表示每一页的数据。每个map对应着一页文档的数据,而list中的每个元素对应着一页文档。例如,可以创建一个List<Map<String, Object>>来存储数据。 2. 设置模板和参数:然后,需要设置模板路径和参数。可以使用TemplateExportParams类来读取模板,设置sheet名,并且将数据map传入。 3. 导出excel:接下来,使用ExcelExportUtil.exportExcel方法导出excel。该方法接受模板参数和数据参数,并返回一个Workbook对象。 4. 写出excel:最后,将Workbook对象写出到输出流中即可下载。可以通过调用Workbook的write方法将数据写入到response的输出流中。 需要注意的是,导出过程中可能会出现样式问题,比如模板中的单元格合并了,但导出excel并没有合并。这时可以通过手动处理来解决合并单元格的问题。 以上是通过easypoi通过模板导出excel的基本步骤。你可以参考提供的代码示例和使用easypoi的相关文档来具体实现。 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Easypoi使用模板导出文档或excel表格详解](https://blog.csdn.net/qq_44845339/article/details/110537034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [使用easyPoi根据模板导出excel](https://blog.csdn.net/weixin_44854514/article/details/120311371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值