如何使用word模板生成word文档(文本,图片)
注意:只针对数据信息与图片信息进行生成。
一,准备工作
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文档(文本,图片)相关推荐
- Springboot通过模板生成pdf文档带图片
Springboot通过模板生成pdf文档带图片 环境:springboot2.3.10.RELEASE + itextpdf5.5.13.2 依赖 <dependency><gro ...
- word模板生成word报表文档
主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...
- C#根据word模板生成word表格报表文档
主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...
- JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...
Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...
- 使用word模板生成word文档的各类方案
使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...
- PHP 使用word模板生成word文档示例
<?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...
- 使用java Apache poi 根据word模板生成word报表
使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...
- java 根据word模板生成word文件
Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...
- apache poi使用例_使用java Apache poi 根据word模板生成word报表例子
[实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...
- 根据word模板生成word和PDF
根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...
最新文章
- es日期format_elasticsearch存储日期格式字段
- 软件测试(20150819)
- 在程序中集成地址簿、电子邮件和地图功能
- python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
- Android开发之如何保证Service不被杀掉(前台服务)
- 2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
- 扩展 junit 框架_JUnit 5 –扩展模型
- python封装exe如何返回上一步_如何将python脚本封装成exe程序?
- ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
- 运营系统性能管理的重要性
- 人工智能——状态空间的启发式搜索
- 程序员必须知道的硬件常识(一):打印机之彩印缺少某种颜色的解决方法
- 如何理解总体标准差、样本标准差与标准误
- 《S.忒修斯之船》读后感600字心得体会
- 关于抢红包的_关于抢红包的作文
- 基于PHP+Html+mysql的客户关系管理CRM系统 文档+项目源码及数据库文件
- 学习fortran77基础语法
- 使用GitHub Actions通过CI提高代码质量
- Nearly Lucky Number
- 古龙妙语大全 下 朱近墨