- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章教你如何用Java替换Word中带有${}的内容由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、因为有些需求,需要把word文档里面的特定数据,设置成可变的;所以需要某种方式,把可变量用标签(如${变量名})替换,通过后端赋值此变量名,重新生成的Word就能根据后端设置的内容变化.
2、替换方法:准备一份word模板文档,如:word_mode.doc(或 word_mode.docx) 文件,把可变内容,用标签${变量名}替换(如图1姓名:${name}) 。
3、转成可读模板:全部设置完变量标签后,对此word文档进行另存为xml格式的文档(图2),保存后的文件名:word_mode.xml(即用户信息.xml)。再通过修改后缀名,最终生成模板(用于替换标签的):word_mode.ftl 。
4、word_mode.ftl文件中,生成的标签名可能被样式隔开,需要手工处理下,如图3(处理前),图4(处理后) 。
。
5、对于生成的ftl文件,使用Notepad++进行xml格式化下,有利于处理EL表达式标签分开的问题。如果有图片的话,格式化后,无法正常显示,可以看看图片的BASE64码最后面与标签是否隔开,如果是可去掉空格.
如果还不行的话,找格式化之前的BASE64内容替换格式化后的图片BASE64的内容,这应该就没有问题.
。
有多个用户信息,需要显示出来,如图所示,word文档处理可变内容.
因为第一行是字段说明不可变,第二行是可变参数,根据List的多少而改变的,可在word_mode.ftl中添加<#list></#list>标签,如图5(开头),图6(结尾) 。
。
<!-- 导出word文档 --><dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version></dependency>
public class UserBean { private String username; private String userAge; private String userHigh; private String userSex; public UserBean(String username, String userAge, String userHigh, String userSex) { this.username = username; this.userAge = userAge; this.userHigh = userHigh; this.userSex = userSex; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } public String getUserHigh() { return userHigh; } public void setUserHigh(String userHigh) { this.userHigh = userHigh; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; }}
package com.jtr.hutool.main; import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import com.jtr.hutool.bean.UserBean; import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;import freemarker.template.Version; public class WordUtils { /** 设置使用的编码格式 */ private static final String CHARSET = "UTF-8"; /** 设置使用的版本 */ private static final String VERSION = "2.3.0"; public static void main(String[] args) { downloadWord("C:UsersThinkDesktop emp", "word_mode.ftl"); } public static void downloadWord(String wordModePath, String wordModeFile) { try { // 1. 获取替换参数 Map<String, Object> wordData = initWordMap(); // 2. 设置配置内容 // 设置版本 Configuration configuration = new Configuration(new Version(VERSION)); // 指定加载Word模板的路径 configuration.setDirectoryForTemplateLoading(new File(wordModePath)); // 以UTF-8的编码格式,读取模板文档 Template template = configuration.getTemplate(wordModeFile, CHARSET); // 3. 输出文档路径及名称 File outFile = new File(wordModePath + wordData.get("username") + "_员工信息.doc"); Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), CHARSET), 10240); // 输出 template.process(wordData, writer); writer.flush(); writer.close(); System.out.println("员工信息导出已完成"); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static Map<String, Object> initWordMap() { List<UserBean> userList = new ArrayList<UserBean>(); userList.add(new UserBean("用户1", "10", "171", "男")); userList.add(new UserBean("用户2", "20", "172", "女")); userList.add(new UserBean("用户3", "30", "173", "男")); userList.add(new UserBean("用户4", "40", "174", "女")); userList.add(new UserBean("用户3", "50", "175", "男")); Map<String, Object> wordData = new HashMap<String, Object>(); wordData.put("name", "作者1"); wordData.put("age", "60"); wordData.put("high", "177"); wordData.put("userList", userList); return wordData; }
到此这篇关于教你如何用Java替换Word中带有${}的内容的文章就介绍到这了,更多相关java替换Word中带有${}的内容内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/liyb1078422974/article/details/115691181 。
最后此篇关于教你如何用Java替换Word中带有${}的内容的文章就讲到这里了,如果你想了解更多关于教你如何用Java替换Word中带有${}的内容的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!