zoukankan      html  css  js  c++  java
  • Java学习之导出word文档

    关键对象:Poi-tl Documentation

    学习路径:http://deepoove.com/poi-tl/#_why_poi_tl

    代码Demo:

        public static void main(String[] args) {
            HashMap<String, Object> dataMap = new HashMap<>();
            Map<String, Object> data = new HashMap<String, Object>();
            ArrayList<Map<String, Object>> dataList = new ArrayList<>();
            //封装数据
            data.put("username", "demo");
            data.put("password", "001");
            data.put("head", Pictures.ofLocal("C:\Users\Pictures\Saved Pictures\ais.jpg")
                    .size(35, 35).create());
            dataList.add(data);
            //key要和模板中的开始结束标签保持一致
            dataMap.put("wordExportTemp", dataList);
            try {
                String res = wordUtil.tempRender(dataMap);
                System.out.println(res);
            } catch (Exception e) {
                System.out.println("Fail");
            }
        }
    public class wordUtil {
        public static String tempRender(HashMap<String, Object> dataMap) throws Exception {
            //模板文件
            String inPut = "D:\tempword\data\wordFile.docx";
            //生成文件
            String outPut = "D:\tempword\data\2021-09-15\exportWord.docx";
            //获取模板文件数据
            XWPFWordExtractor extractor = new XWPFWordExtractor(OPCPackage.open(new FileInputStream(inPut)));
            //获取String型模板数据
            System.out.println(extractor.getText());
            FileOutputStream outputStream = new FileOutputStream(outPut);
            //用来
            ConfigureBuilder builder = Configure.builder();
            //用默认的方式抛出异常
            builder.useDefaultEL(true);
            //匹配除了标签前后缀外的任意字符
            builder.buildGrammerRegex(RegexUtils.createGeneral("{{", "}}"));
            //创建结果对象
            XWPFTemplate docx = XWPFTemplate.compile(inPut,builder.build());
            //数据渲染
            docx.render(dataMap);
            //数据写出
            docx.write(outputStream);
            outputStream.flush();
            outputStream.close();
            docx.close();
            return "OK";
        }
    }

    模板:

    注意:{{?wordExportTemp}} 中的“wordExportTemp”要和封装数据Map的“key"保持一致!

    结果

  • 相关阅读:
    解决端口被占用问题
    python实现操作mysql数据库
    python实现读取并处理excel单元格中的数据
    python实现读取配置文件
    python实现读取excel
    接口测试简介
    python实现获取文件夹中的最新文件
    Redis入门
    mysql高可用研究(二) 主从+MHA+Atlas
    mysql高可用研究(一) 主从+MHA架构
  • 原文地址:https://www.cnblogs.com/Bernard94/p/15277152.html
Copyright © 2011-2022 走看看