首页 > 图灵资讯 > 技术篇>正文

POI 填充word文档

2023-06-08 09:14:27

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(下载异常);        }    }

上一篇 mybatis参数处理2
下一篇 论电子病历编辑器的现状和发展方向

文章素材均来源于网络,如有侵权,请联系管理员删除。