注意:只针对数据信息与图片信息进行生成。


一,准备工作

1,编辑word模板,变量信息以${变量名称}表示,图片要使用临时图片占用位置。

2,转换格式word输出为Word.xml文档格式,在手动改为ftl格式。

4,检查所有的变量${xxxx}在转换格式时是否错位。

二,代码

package com.maxinyang.word;import com.itextpdf.text.pdf.BaseFont;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.Version;
import org.apache.tools.ant.types.resources.AbstractClasspathResource;
import sun.misc.BASE64Encoder;import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;/*** 作者:killgod* 口号:天王盖地虎*/
public class WriteWord {/*** word生成需要org.freemarker.freemarker类* 主要介绍如何使用模板生成(包含图片)* 主要是用的类:* 1.BABSE64Encoder类:因为转为xml文件的图片编码使用的是BASE64* 2.Configuration类: 配置类使用它获取到模板类对象* 3.Template类:使用他来完成参数与${xxxx}映射* * 注意:*  1.map中key必须与word文档中${xxx}一致才能完成赋值*  2.word生成图片必须完成前提准备** @param args*/public static void main(String[] args) {Map<String, Object> map = new HashMap<>();// 将word所需要的数据放入map集合map.put("name", "张三");map.put("password", "laoma123");map.put("age", "18");// 读取图片将其转为base64格式String imgPaht = downPicture("F:\\学习测试文件\\PDF\\2.png");map.put("img", imgPaht);// 核心方法generateWord(map);}/*** 将图片转为base64格式返回处理好的字符串** @param picture*/public static String downPicture(String picture) {InputStream in = null;byte[] data = null;try {in = new FileInputStream(picture);data = new byte[in.available()];in.read(data);in.close();} catch (Exception e) {e.printStackTrace();}BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);}/*** 生成word文档核心方法* @param params*/public static void generateWord(Map<String, Object> params) {// 读取模板文件Version incompatibleImprovements;Configuration configuration = new Configuration();configuration.setDefaultEncoding("UTF-8");// 模板文件.ftl文件位置 注意:目录是指文件存在的文件夹。File templateContents = new File("F:\\学习测试文件\\wrod\\");String templateFileName = "测试word模板.ftl";BufferedWriter bufferedWriter = null;try {// 通过配置类读取模板获取模板类configuration.setDirectoryForTemplateLoading(templateContents);Template template = configuration.getTemplate(templateFileName, "UTF-8");// 输出文件名称long timeMillis = System.currentTimeMillis();String outFileName = "xxcs_" + timeMillis + ".doc";String outFile = "F:\\学习测试文件\\word\\result\\";//获取输出文件路径File outFileContents = new File(outFile);// 判断文件路径是否存在if (!outFileContents.exists()) {outFileContents.mkdirs();}outFileContents = new File(outFile + outFileName);bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFileContents), "UTF-8"));// 参数与输出流template.process(params, bufferedWriter);} catch (IOException | TemplateException e) {e.printStackTrace();}finally {if(bufferedWriter!=null){try {//关闭流bufferedWriter.close();} catch (IOException e) {e.printStackTrace();}}}}}

如何使用word模板生成word文档(文本,图片)相关推荐

  1. Springboot通过模板生成pdf文档带图片

    Springboot通过模板生成pdf文档带图片 环境:springboot2.3.10.RELEASE + itextpdf5.5.13.2 依赖 <dependency><gro ...

  2. word模板生成word报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  3. C#根据word模板生成word表格报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  4. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  5. 使用word模板生成word文档的各类方案

    使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...

  6. PHP 使用word模板生成word文档示例

    <?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...

  7. 使用java Apache poi 根据word模板生成word报表

    使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...

  8. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  9. apache poi使用例_使用java Apache poi 根据word模板生成word报表例子

    [实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...

  10. 根据word模板生成word和PDF

    根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...

最新文章

  1. es日期format_elasticsearch存储日期格式字段
  2. 软件测试(20150819)
  3. 在程序中集成地址簿、电子邮件和地图功能
  4. python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
  5. Android开发之如何保证Service不被杀掉(前台服务)
  6. 2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
  7. 扩展 junit 框架_JUnit 5 –扩展模型
  8. python封装exe如何返回上一步_如何将python脚本封装成exe程序?
  9. ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
  10. 运营系统性能管理的重要性
  11. 人工智能——状态空间的启发式搜索
  12. 程序员必须知道的硬件常识(一):打印机之彩印缺少某种颜色的解决方法
  13. 如何理解总体标准差、样本标准差与标准误
  14. 《S.忒修斯之船》读后感600字心得体会
  15. 关于抢红包的_关于抢红包的作文
  16. 基于PHP+Html+mysql的客户关系管理CRM系统 文档+项目源码及数据库文件
  17. 学习fortran77基础语法
  18. 使用GitHub Actions通过CI提高代码质量
  19. Nearly Lucky Number
  20. 古龙妙语大全 下 朱近墨

热门文章

  1. ad设置塞孔_超实用!PCB设计中过孔常用的6种处理方式
  2. 冷启动与热启动的定义
  3. 北斗B1I测距码特性及程序生成
  4. 华为交换机常用命令大全
  5. VS2010、SQL Server 2008安装详解
  6. html 表格自动编号,excel表格批量自动编号
  7. 常用的端口号有哪些?
  8. mysql charindex 不存在_mysql – 分隔逗号分隔字符串 – FUNCTION db.CHARINDEX不存在
  9. python中的阶乘求和公式_Python阶乘求和的方法
  10. js 苹果手机点击事件 兼容