Java操作word文档大全(持续更新) 您所在的位置:网站首页 java操作word文档增加一个首页 Java操作word文档大全(持续更新)

Java操作word文档大全(持续更新)

2024-06-04 18:43| 来源: 网络整理| 查看: 265

文章目录 一、根据模板导出word1、需要的包2、准备word文档3、编码4、坑

一、根据模板导出word 1、需要的包 org.freemarker freemarker 2.3.32 2、准备word文档

1.用Microsoft Office Word打开word原件;

2.把需要动态修改的内容替换成${XX}的形式,如果有图片,尽量选择较小的图片几十K左右的小图片,并调整好位置,占位(小图片转换的base64数据少,便于修改);如下图 在这里插入图片描述

3.另存为,选择保存类型Word 2003 XML 文档(*.xml)【这里说一下为什么用Microsoft Office Word打开且要保存为Word 2003XML,本人亲测,用WPS找不到Word 2003XML选项,如果保存为Word XML,会有兼容问题,避免出现导出的word文档不能用Word 2003打开的问题】,保存的文件名不要是中文

4.用notepad++打开文件;

5.将文档内容中需要动态修改内容的地方,换成freemarker的标识。其实就是Map中key,如${landName};

6.在加入了图片占位的地方,会看到一片base64编码后的代码,把base64替换成${image},也就是Map中key,值必须要处理成base64;

代码如:${xx}

注意:“>${xx} try { // 创建FreeMarker配置,参数是包版本号 Configuration cfg = new Configuration(Configuration.VERSION_2_3_32); cfg.setClassForTemplateLoading(WordUtil.class, "/"); // 会找到项目路径下 cfg.setDefaultEncoding("UTF-8"); // 加载模板文件 Template template = cfg.getTemplate("template/test.ftl"); Map data = new HashMap(); data.put("name", "张三"); data.put("age", "18"); data.put("weather", "晴朗"); // 图片需要转为base64 data.put("img", getImgStr("E:\\netty.png")); data.put("major", "打电玩"); List list = new ArrayList(); Map m1 = new HashMap(); m1.put("like", "篮球"); list.add(m1); Map m2 = new HashMap(); m2.put("like", "足球"); list.add(m2); data.put("list", list); // 生成Word文件 // 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开 // utf-8是一定要加的! Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\output.docx"), "utf-8")); template.process(data, out); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 将图片转换成Base64编码 * * @param imgFile * 待处理图片 * @return */ public static String getImgStr(String imgFile) { // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null; byte[] data = null; // 读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } return new String(Base64.encodeBase64(data)); } } 4、坑

注意,要按照顺序生成ftl文件!否则会有兼容性问题! https://blog.csdn.net/qq_35222232/article/details/100337967



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有