java生成word证明文件
开发中遇到系统自动出常用证明的需求,例如某在校大学生要求学校开具在校证明,这类证明数量大格式统一,使用代码如何实现。
一、设置word模板
下图中红色部分就是要动态变化的。

模板存放位置

二、依赖破pom文件

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency> <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.9</version>
</dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency> <dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
三、编写java代码
package com.example.demo; import com.sun.istack.internal.logging.Logger;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range; import java.io.*;
import java.util.HashMap;
import java.util.Map; public class WordTest { private static Logger log= Logger.getLogger(WordTest.class); public static void main(String[] args) {
Map map=new HashMap();
map.put("name","张三");
map.put("num","123456");
getBuild("doc/在校证明.doc",map,"E:/在校证明1.doc");
} /*
tmpFile:模板存放的位置
contentMap:向模板中放入的参数
exportFile:模板中放入参数后的文件存放位置
*/
public static void getBuild(String tmpFile, Map<String, String> contentMap, String exportFile){ InputStream inputStream = WordTest.class.getClassLoader().getResourceAsStream(tmpFile);
HWPFDocument document = null;
try {
document = new HWPFDocument(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
// 读取文本内容
Range bodyRange = document.getRange();
// 替换内容
for (Map.Entry<String, String> entry : contentMap.entrySet()) {
bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());
} //导出到文件
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
document.write(byteArrayOutputStream);
OutputStream outputStream = new FileOutputStream(exportFile);
outputStream.write(byteArrayOutputStream.toByteArray());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、效果


java生成word证明文件的更多相关文章
- java生成word的几种方案
http://blog.sina.com.cn/s/blog_a5e968370101crtl.html 1. Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建 ...
- JAVA生成word的几种方法对比
首先介绍几种java导出word方案 1.Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现 ...
- 使用Java生成word文档(附源码)
当我们使用Java生成word文档时,通常首先会想到iText和POI,这是因为我们习惯了使用这两种方法操作Excel,自然而然的也想使用这种生成word文档.但是当我们需要动态生成word时,通常不 ...
- 利用 Pandoc 将 Markdown 生成 Word/PDF 文件
Pandoc 是一个格式转化工具,可以用于各(luan)种(qi)各(ba)样(zao)的文件转换, 反正我是认不全官网上的那个图(傲娇脸), 之前一直使用它将 Markdown 文件转换成 Html ...
- java生成word
import freemarker.template.Configuration; import freemarker.template.Template; import javax.servlet. ...
- [转载]Java生成Word文档
在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...
- [原创]Java生成Word文档
在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...
- Java 生成 JNI 头文件
[参考文章]:javah javac 命令行生成native的方法教程 [参考文章]:用javah 导出类的头文件, 常见的错误及正确的使用方法 项目需要调用 C++动态库,由于项目包结构发生变化,需 ...
- Java生成 Word文档的并打印解决方案
户要求用程序生成标准的word文档,要能打印,而且不能变形,以前用过很多解决方案,都在客户严格要求下牺牲的无比惨烈. POI读word文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个 ...
- Java生成静态HTML文件
private static final String FILEPATH = "/opt/nginx/html/banner/"; private static final Str ...
随机推荐
- java中的try-with-resource语法
java的世界千奇百怪...当我甩出如下代码段,不知阁下如何应对? try(A a=new A()){ 和a变量无关的业务代码块 } 没错,这就是"臭名昭著"的try-with-r ...
- springboot的缓存和redis缓存,入门级别教程
一.springboot(如果没有配置)默认使用的是jvm缓存 1.Spring框架支持向应用程序透明地添加缓存.抽象的核心是将缓存应用于方法,从而根据缓存中可用的信息减少执行次数.缓存逻辑是透明地应 ...
- [ABC262A] World Cup
Problem Statement A sport event is held in June of every year whose remainder when divided by $4$ is ...
- 效率工具:Hutool 嘎嘎香,被秀到了!
在日常开发中,我们会使用很多工具类来提升项目开发的速度,而国内用的比较多的 Hutool 框架,就是其中之一. 先来看官方对于 Hutool 的定义: Hutool 是一个小而全的 Java 工具类库 ...
- Spring Cache + Caffeine的整合与使用
前言 对于一些项目里需要对数据库里的某些数据一直重复请求的,且这些数据基本是固定的,在这种情况下,可以借助简单使用本地缓存来缓存这些数据.这些介绍一下Spring Cache和Caffeine的使用. ...
- SpringBoot对象拷贝
目录 概述 定义实体类 Car size carInfo 造测试数据 Spring BeanUtils Apache BeanUtils Cglib BeanCopier MapStruct 性能测试 ...
- 【笔记-错误】springCloud-alibaba-feign集成sentinel的启动报错
背景 随着Spring Cloud Alibaba 2.2.0.RELEASE的发布,终于可以使用最新的Spring Boot和Spring Cloud. 现在的环境 依赖 版本 Spring Boo ...
- UnionFind 并查集
简介 UnionFind 主要用于解决图论中的动态联通性的问题(对于输入的一系列元素集合,判断其中的元素是否是相连通的). 以下图为例: 集合[1, 2, 3, 4] 和 [5, 6]中的每个元素之间 ...
- Typecho 反向代理 http 访问强制启用生成 https 链接
问题描述 微酷是使用Nginx反向代理内网的Typecho站点,为了效率内网访问不需要使用https,这样Typecho接收到的请求是http协议的,于是网站内部资源链接被修改成了http. 解决方案 ...
- 【玩转鲲鹏DevKit系列】如何快速迁移软件包?
本文分享自华为云社区<[玩转鲲鹏DevKit系列]如何快速迁移软件包?>,作者: 华为云社区精选 . 软件包含各种不同格式的文件,如RPM包通常包含二进制文件.SO 库文件.JAR包.配置 ...