Java操作Word文档
Java 生成 Word 的几种方案
参考
主要有这么一些工具可以使用 Jacob、Apache POI、Java2word、iText,还有一种方法是使用XML作为模板。
使用 XML 的思路:先用 office 编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析 FreeMarker模板 并输出 Word 文档。经测试这样方式生成的word文档完全符合 office 标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。 ===> 参考
- Jacob 和 Java2word需要服务器端支持 office,相对麻烦。
- Apache POI 功能较少。===> 参考
这里推荐一个刚刚发现的产品,由成都冰蓝科技开发的产品 Spire,可以用于操作各种文档,目前我只体验过 Spire.Doc for Java,个人认为使用简单,功能强大,对样式的支持非常好(虽然Spire主要面向企业提供产品,但是也提供了免费使用的产品)。
使用 Spire.Doc 替换 Word 模板中占位符
这里使用 Maven 下载 Spire.Doc 也可以直接下载 jar 包 ==> 参考
1️⃣:首先引入 Maven 依赖
在 Maven 的官方仓库或者阿里云镜像仓库中是没有 Spire 依赖的,所以需要配置 Spire 自己的一个仓库源。
<repositories><repository><id>com.e-iceblue</id><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository>
</repositories>
以下就是 Spire.Doc for Java 的依赖
<!--spire.doc 操作word文档-->
<dependency><groupId>e-iceblue</groupId><artifactId>spire.doc.free</artifactId><version>3.9.0</version>
</dependency>
2️⃣:设计一个Word模板,此文档中存在占位符
3️⃣:编码
public class TestSpireWord {@Testpublic void generateAndReplaceText() {Document doc = new Document();doc.loadFromFile("F:\\yourlocation\\template.docx", FileFormat.Docx);Map<String, String> map = new HashMap<>();map.put("${name}", "张山");map.put("${birthday}", "2021-10-18");map.put("${result}", "成功");map.put("${col}", "第一列");map.put("${col1}", "第二列");map.put("${col2}", "第三列");replaceSpecialWord(doc, map);// 保存为文件doc.saveToFile("F:\\yourlocation\\result.docx",FileFormat.Docx);// 或者保存至输出流中//ByteArrayOutputStream os = new ByteArrayOutputStream();//doc.saveToStream(os, FileFormat.Docx);}/*** 替换Word文件中 ${} 标识的特殊字符* <br>* <strong>注意:如果存在部分特殊表示无法替换,请尝试将 ${} 的整个字符串复制到word中,有可能word没有将${}识别为一个整体</strong>* @param doc: Sprire Document* @param map: 占位符${} 与 需要替换的为字符串的对应关系*/public void replaceSpecialWord(Document doc, Map<String, String> map) {// 正则表达式,匹配所有的占位符 ${}Pattern pattern = Pattern.compile("\\$\\{.*?}");// 根据正则表达式获取所有文本TextSelection[] allPattern = doc.findAllPattern(pattern);// 逐个替换占位符for (TextSelection textSelection : allPattern) {String tmp = map.get(textSelection.getSelectedText());System.out.print(textSelection.getSelectedText());int res = doc.replace(textSelection.getSelectedText(), tmp, true, true);System.out.println(": " + res);}}
}
最终结果:
// 控制台输出
${name}: 1
${birthday}: 1
${result}: 1
${col}: 1
${col1}: 1
${col2}: 1
可以看到使用 Spire.Doc for Java 替换占位符十分简单,并且不会破坏模板的原有样 式。
如果需要了解 Spire.Doc for Java 的更多操作,参考 ===> 官方文档
Java操作Word文档相关推荐
- Java操作word文档将docx转换为pdf格式
Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...
- java操作word文档(文字,图片,表格添加以及替换操作)
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
- Java 操作 word 文档 (三)段落Paragraphs,文本加粗、斜体、字体、字体大小、复杂文本
目录 1.段落标签 2.引入 docx4j 2.1 引入 docx4j 的 maven 依赖 2.2 加载文档 2.3 获取段落中的文本 3.<w:r> 的属性 4.设置文本字体与大小 4 ...
- Java 操作 word 文档 (二)初识 WordprocessingML 标签
在初识 word 文档 一文中,简单的介绍了一下 word 文档的格式.本文简单介绍 document.xml 文件中的 WordprocessingML 标签(本文简称 WordML) ,后续的文章 ...
- spire.doc 让java操作word文档更简单优雅
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...
- Java操作Word文档添加水印(文字/图片)
水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法. 使用工具:Free Spire.Doc for Ja ...
- java操作word文档,深度解析,值得收藏
Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致! Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个 ...
- java将WORD文档转换成pdf文件
总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件. 实现思路 一.先将WORD文档转换成HMTL文件格式(参阅我的前一文<JAVA操作WORD文档). 二.用流读取H ...
- java拼接word文档
#java拼接word文档 说到java操作word 文档,其实网上都已经讲的很多了.我就不再一一赘述了,这里我只记录下使用 docx4j 拼接word文档,使用jacob 调用word 进程生成或者 ...
最新文章
- 基于OpenCV的网络实时视频流传输
- oracle之TNS:无监听程序解决办法
- 2015年9月13日-9月15日课程作业(sed、awk)
- 最舒适的路线 第六届
- apache php mysql下载_linux+apache+php+mysql 安装
- 10投屏后没有声音_手机投屏到电视没有声音?
- 关于修改了virc(增加了:set nu)但是vim行号还是不显示的问题
- JavaWeb --第一章Web基本概念
- PL2303 Windows8.1驱动的问题
- silverlight---游戏中的人工智能之追逐与闪躲
- C# 一次性获取二维数组中的一维数组数据
- Oracle数据库管理之创建和删除数据库
- 人行地区代码一览表_世界各国和地区名称代码表
- for循环及判断语句的20个经典习题
- 安卓外置SD卡linux,Android获取机身存储、内置SD卡与外置TF卡路径
- 词向量介绍以及Word2Vec的pytorch实现
- java 中prehandle_Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法
- 【Mysql】Mysql GTID复制进程出现异常,出现断点
- 【实战场景】商城-折扣活动设计方案
- 数学之美番外篇:平凡而又神奇的贝叶斯方法(转自刘未鹏)
热门文章
- Camera Shading介绍
- android如何用真机测试,android studio如何使用真机测试app
- FileNotFoundException: http:\localhos46087125.jpg (文件名、目录名或卷标语法不正确
- 给大家推荐一个大大的萌妹子,算是我学计算机以来遇到的最喜欢的妹子吧!23333333
- 社会化媒体营销方案简介
- 404 Note Found队 Alpha7
- 2017年大数据从业者又要涨工资了!
- ZeroDivisionError: integer division or modulo by zero
- mars3d中时间的转换
- 阿里开放平台接入——开放平台注册与API调用
Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
目录 1.段落标签 2.引入 docx4j 2.1 引入 docx4j 的 maven 依赖 2.2 加载文档 2.3 获取段落中的文本 3.<w:r> 的属性 4.设置文本字体与大小 4 ...
在初识 word 文档 一文中,简单的介绍了一下 word 文档的格式.本文简单介绍 document.xml 文件中的 WordprocessingML 标签(本文简称 WordML) ,后续的文章 ...
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...
水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法. 使用工具:Free Spire.Doc for Ja ...
Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致! Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个 ...
总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件. 实现思路 一.先将WORD文档转换成HMTL文件格式(参阅我的前一文<JAVA操作WORD文档). 二.用流读取H ...
#java拼接word文档 说到java操作word 文档,其实网上都已经讲的很多了.我就不再一一赘述了,这里我只记录下使用 docx4j 拼接word文档,使用jacob 调用word 进程生成或者 ...