当前位置: 首页 > 图灵资讯 > 技术篇> POI 填充word文档

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