EasyPoi 实现Word文档内容替换3种情况(正常文本替换、表格文本替换、图表替换)

该博客介绍了如何利用EasyPoi、JFreeChart和Hutool库在Java中操作Word文档,包括读取模板文件、替换内容以及生成饼图。通过示例代码展示了如何创建饼图并将其插入到Word文档中,同时提供了替换标记的注意事项。
摘要由CSDN通过智能技术生成

1 Maven依赖

        <!-- EasyPoi文档处理工具 -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.4.0</version>
        </dependency>
        <!-- JFreeChart图表库 -->
        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.5.3</version>
        </dependency>
        <!-- Hutool工具包 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.6.2</version>
        </dependency>

2 调试代码

    /**
     * 替换内容
     *
     * @param response
     * @throws IOException
     */
    @GetMapping("/replaceContent")
    public void replaceContent(HttpServletResponse response) {
        try {
            //读文件
            ClassPathResource cpr = new ClassPathResource("/doc/模板.docx");
            XWPFDocument document = new MyXWPFDocument(cpr.getInputStream());
            //生成文本内容Map
            Map<String, Object> contentMap = new HashMap<>();
            contentMap.put("xudongmaster1", "旭东怪1");
            contentMap.put("xudongmaster2", "旭东怪2");

            //图例名称列表
            List<String> legendNameList = new ArrayList<>(Arrays.asList("一级", "二级", "三级", "四级", "五级"));
            //数据列表
            List<Object> dataList = new ArrayList<>(Arrays.asList(1, 3, 5, 6, 2));
            //生成饼图数据
            byte[] chartBytes = GenerateChartUtil.createPieChart("各级占比情况", legendNameList, dataList
                    , 300, 400, JFreeChartUtil.createChartTheme("宋体"));
            //将饼图数据变成图片
            ImageEntity image = new ImageEntity();
            //设置高度
            image.setHeight(400);
            //设置宽度
            image.setWidth(300);
            //类型
            image.setType(ImageEntity.Data);
            image.setData(chartBytes);
            contentMap.put("chart", image);

            //替换文本内容
            WordExportUtil.exportWord07(document, contentMap);
            //返回流
            response.setHeader("content-type", "application/octet-stream");
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String("模板.docx".getBytes("utf-8"), "ISO-8859-1"));
            OutputStream outputStream = response.getOutputStream();
            document.write(outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3 模板文件

模板路径:

模板内容:

 4 调试结果

 注:

(1)模板中的替换标记必须以{{开始,以}}结尾,同时替换标记最好先在记事本中输入好,在复制到Word文档中,否则会出现内容替换失败的情况。

(2)GenerateChartUtil、JFreeChartUtil的源码请查看以下博客。

JFreeChart 生成5种图表(饼图、柱状图、堆叠柱状图、折线图、散点图)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值