0
点赞
收藏
分享

微信扫一扫

POI 填充word文档

瑾谋 2023-06-08 阅读 34

1.Apache POI

@GetMapping("data")
    public void data(HttpServletResponse response) throws Exception {
        response.setContentType("application/msword;charset=utf-8");
        response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("test.docx", "utf-8"));
        ClassLoader classLoader = getClass().getClassLoader();
        InputStream inputStream = classLoader.getResourceAsStream("templates/test.docx");
        XWPFDocument document = new XWPFDocument(inputStream);
        List<XWPFParagraph> paragraphs = document.getParagraphs();
        for (XWPFParagraph paragraph : paragraphs) {
            List<XWPFRun> runs = paragraph.getRuns();
            for (XWPFRun run : runs) {
                String text = run.getText(0);
                text = text.replace("{{name}}", "张三");
                run.setText(text,0);
            }
        }
        ServletOutputStream outputStream = response.getOutputStream();
        document.write(outputStream);
        outputStream.flush();
    }

2.poi-tl

<dependency>
            <groupId>com.deepoove</groupId>
            <artifactId>poi-tl</artifactId>
            <version>1.12.1</version>
        </dependency>

使用 {{name}} 作为word中的占位符

@Override
    public void test(HttpServletResponse response) {
        try {
            response.setContentType("application/msword;charset=utf-8");
            response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("test.docx", "utf-8"));
            ClassLoader classLoader = getClass().getClassLoader();
            InputStream inputStream = classLoader.getResourceAsStream("templates/test.docx");

            Map<String, Object> dataModel = new HashMap<>();
            dataModel.put("name", "张三");
            XWPFTemplate render = XWPFTemplate.compile(inputStream).render(dataModel);
            
            ServletOutputStream outputStream = response.getOutputStream();

            render.write(outputStream);

            outputStream.flush();

        } catch (Exception e) {
            throw new ServiceException("下载异常");
        }

    }


举报

相关推荐

0 条评论