生成word附件和word域动态赋值
生成word文档和word域动态赋值,很多时候需要生成这样的word文档供下载和打印,先制作一个包含了域的 word的模板附件,放在服务器端或者字节流存入数据库,以供需要的时候代码可以获取到,如:

其中右击每个域可以选择编辑域,修改域的名称;
获取到保存在数据库中的word模板内容:
// DocAttachFile为数据库存放这个word附件的表对应的实体,通过这个实体类的content属性对应表的content字段获取到word的内容
DocAttachFile docAttachFile = (DocAttachFile ) docAttachFile list.get(0);
String licenseName = JsfHelper.getDeployWarPath() + "WEB-INF/classes/license.xml";
try {
License license = new License();
license.setLicense(licenseName);
Document doc = new Document(docAttachFile .getContent());
String[] fieldNames = null;
Object[] values = null;
使用aspose的word组件展示word内容和给域赋值:
Map<?, ?> docmap = getDocMap();
if (docmap.containsKey(this.doctype)) {
Map<String, String> map = (Map<String, String>) docmap.get(this.doctype);
fieldNames = new String[(map == null) ? 0 : map.size()];
values = new Object[(map == null) ? 0 : map.size()];
int num = 0;
for (Map.Entry entry : map.entrySet()) {
fieldNames[num] = ((String) entry.getKey());
values[num] = entry.getValue();
++num;
} // 获取邮件合并类型的域
doc.getMailMerge().execute(fieldNames, values); boolean isfiltersubmit = true;
if ((String.valueOf(5).equals(this.doctype)) || (String.valueOf(2).equals(this.doctype))) {
isfiltersubmit = false;
}
// 调用的aspose的word组件方法
mergertable(doc, isfiltersubmit);
String docname = this.autoService.getItemTextByName("word附件", this.doctype) + ".doc";
public void mergertable(Document doc, boolean isfiltersubmit) throws Exception {
String sql = this.userMaterialService.getDocMaterialSQL(this.user.getPviguid(), isfiltersubmit);
CRUDService crud = new CRUDService(DataSourceFactory.getFrameDs());
Connection conn = crud.getDb().getConnection();
ResultSet resultSet = SQLManageUtil.executeDataTable(sql, crud, conn, 1005, 1007);
if (resultSet.next()) {
try {
resultSet.first();
DataTable orderTable = new DataTable(resultSet, "Material");
doc.getMailMerge().executeWithRegions(orderTable);
crud.closeDataSource();
conn.close();
resultSet.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
else {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
Map<String, Object> data1 = new HashMap<String, Object>();
data1.put("row_index", "");
data1.put("MaterialName", "");
dataList.add(data1);
doc.getMailMerge().executeWithRegions(new MapMailMergeDataSource(dataList, "Material"));
}
}
获取其他信息给word的域赋值:
public Map<String, Map<String, String>> getAllDocValue() {
Map<String, Map<String, String>> docmap = new HashMap<String, Map<String, String>>();
// 三好青年申报审批表
Map<String, String> threehqnApply= new HashMap<String, String>();
threehqnApply.put("FlowSn", this.user.getFlowsn());
threehqnApply.put("Shenpilb", this.autoService.getItemTextByName("三好青年类别", this.user.getShType()));
threehqnApply.put("Year", String.valueOf(DateUtil.getYearOfDate(new Date())));
threehqnApply.put("ApplyerName", this.user.getApplyername());
threehqnApply.put("contact", this.user.getContactperson());
threehqnApply.put("ApplyDate", DateUtil.convertDate2String(this.user.getApplydate(), "yyyy年MM月dd日"));
threehqnApply.put("TaskName", this.user.getProjectname());
docmap.put(String.valueOf(1), threehqnApply);
// 四好青年申请表附件
Map<String, String> fourhqnApply= new HashMap<String, String>();
fourhqnApply.put("flownum", this.user.getFlowsn());
fourhqnApply.put("plateNumber", user.getPlateNumber());
fourhqnApply.put("ownerName", user.getOwnerName());
docmap.put(String.valueOf(32), fourhqnApply);
return docmap;
}
这个方法中可以同时给多个附件赋值;
生成word附件和word域动态赋值的更多相关文章
- 生成带有表格的word附件和动态赋值
生成带有表格的word附件和动态赋值, 表格前后需要添加一个特殊的开始和结束的域,表格第一列 TableStart:AuditJdcttbzInfo 和表格的最后一列 TableEnd:AuditJd ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- JSP利用freemarker生成基于word模板的word文档
利用freemarker生成基于word模板的word文档 freemarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器 ...
- 【jacob word】使用jacob,合并多个word为一个word文件
将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...
- 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集
使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...
- 利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)
https://blog.csdn.net/Fishroad/article/details/47951061?locationNum=2&fps=1 先下载jacob.jar包.解压后将ja ...
- POI 读取word (word 2003 和 word 2007) (转)
最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 9 ...
- Highcharts动态赋值学习
最近老大让做项目中的统计图表功能,需要使用highcharts这个插件,弄出来了两种类型的图表动态赋值的实现,首先贴上中文网的官网和api地址,使用这个英语不好的同学肯定会用到的: 中文网官网:htt ...
- URL动态赋值
url动态赋值: 指的是url中包含{selector},即花括号括起来的jQuery选择器,当提交该url时,框架会自动将selector对应元素的值替换到花括号所占区域. (感觉实现了一点类似el ...
随机推荐
- 【BZOJ1478】Sgu282 Isomorphism Pólya定理神题
[BZOJ1478]Sgu282 Isomorphism 题意:用$m$种颜色去染一张$n$个点的完全图,如果一个图可以通过节点重新标号变成另外一个图,则称这两个图是相同的.问不同的染色方案数.答案对 ...
- [工具] Sublime Text 使用指南
http://bbs.it-home.org/thread-46291-1-1.html 摘要(Abstract) 更新记录 更正打开控制台的快捷键为Ctrl + ` 更正全局替换的快捷键为Ctrl ...
- iOS - 利用 iTunes 接口检查 App 版本更新
iOS 想要检查 App 当前版本是否为最新,一般的方案大概都是服务器自己提供一个接口来获取 App 最新版本是多少,然后再做出相应提示是否需要更新,但是接口需要手动维护,应用要审核,还得等审核通过以 ...
- VMware 安装CentOS 6.5图文步骤 以及安装后无法联网的解决办法
一.VMwareWorkstation10 中安装Centos6.5(64位)步骤: 首先下载vmware 和centos6.5 1. 打开VMware-workstation点击“新建虚拟机”,到向 ...
- 2018-2019-2 20165330《网络对抗技术》Exp3 免杀原理与实践
目录 基础问题 相关知识 实验内容 实验步骤 实验过程中遇到的问题 离实战还缺些什么技术或步骤? 实验总结与体会 实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...
- 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息
详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...
- 数据库管理系统的ACID特性
数据库管理系统(DBMS)的事务都遵循着四种标准规格的约定.将这四种特性的首字母结合起来就统称为ACID特性.这些约定是所有DBMS都必须遵守的规则. 原子性 原子性是指在事务结束时,其中所包含的更新 ...
- window10 telnet的启用
(1) window+R打开运行窗口,输入control,如图: (2) 点击类别改成大图标: 如图所示: 然后点击程序和功能. (3) 然后依次点击:启用或者关闭windows功能->teln ...
- 分布式网格缓存Coherence简介
Coherence企业级缓存(一) 特点 摘要:Oracle Coherence是一个企业级的分布式集群缓存框架.具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价 ...
- WordPress已占全球网站平台18.9%的份额
Automattic创始人马特·穆伦维格(Matt Mullenweg)在旧金山的WordCamp会议上谈到了旗下博客平台WordPress的最新发展情况.WordPress平台已成为全球18.9%网 ...