生成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域动态赋值的更多相关文章

  1. 生成带有表格的word附件和动态赋值

    生成带有表格的word附件和动态赋值, 表格前后需要添加一个特殊的开始和结束的域,表格第一列 TableStart:AuditJdcttbzInfo 和表格的最后一列 TableEnd:AuditJd ...

  2. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

  3. JSP利用freemarker生成基于word模板的word文档

    利用freemarker生成基于word模板的word文档 freemarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器 ...

  4. 【jacob word】使用jacob,合并多个word为一个word文件

    将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...

  5. 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集

    使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...

  6. 利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

    https://blog.csdn.net/Fishroad/article/details/47951061?locationNum=2&fps=1 先下载jacob.jar包.解压后将ja ...

  7. POI 读取word (word 2003 和 word 2007) (转)

    最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 9 ...

  8. Highcharts动态赋值学习

    最近老大让做项目中的统计图表功能,需要使用highcharts这个插件,弄出来了两种类型的图表动态赋值的实现,首先贴上中文网的官网和api地址,使用这个英语不好的同学肯定会用到的: 中文网官网:htt ...

  9. URL动态赋值

    url动态赋值: 指的是url中包含{selector},即花括号括起来的jQuery选择器,当提交该url时,框架会自动将selector对应元素的值替换到花括号所占区域. (感觉实现了一点类似el ...

随机推荐

  1. 【CF884F】Anti-Palindromize 费用流

    [CF884F]Anti-Palindromize 题意:定义一个串是反回文的,当且仅当对于1<=i<=len,$a_i!=a_{len-i+1}$. 现在给出一个长度为n的串S(n是偶数 ...

  2. [转]-[携程]-A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems

    原文链接:推荐系统中基于深度学习的混合协同过滤模型 近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程 ...

  3. UVA 11881 - Internal Rate of Return - [二分]

    依然是来自2017/9/17的周赛水题…… 题目链接:https://cn.vjudge.net/problem/UVA-11881 题解: 观察这个函数: 由于CF[i]固定值,因此NPV(IRR) ...

  4. 在排序模型方面,点评搜索也经历了业界比较普遍的迭代过程:从早期的线性模型LR,到引入自动二阶交叉特征的FM和FFM,到非线性树模型GBDT和GBDT+LR,到最近全面迁移至大规模深度学习排序模型。

    https://mp.weixin.qq.com/s/wjgoH6-eJQDL1KUQD3aQUQ 大众点评搜索基于知识图谱的深度学习排序实践 原创: 非易 祝升 仲远 美团技术团队 前天    

  5. h5地理位置API

    h5地理位置API 地理API允许javascript程序向浏览器询问用户的真实地理位置,支持地理位置API的浏览器在访问前总是会询问用户是否允许. 获取用户地理的途径有:         1.ip地 ...

  6. PowerSploit: The Easiest Shell You'll Ever Get - Pentest Geek - Penetration Testing - Infosec Professionals

                    PowerSploit: The Easiest Shell You'll Ever Get - Pentest... Sometimes you just want ...

  7. iOS多线程编程之NSThread的使用(转载)

    1.简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.NSThread 2.Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的 ...

  8. iOS-图像之CoreImage框架

    1.coreImage的介绍   coreImage是IOS5中新加入的一个Objective-C的框架,提供了强大高效的图像处理功能,用来对基于像素的图像进行操作与分析.iOS提供了很多强大的滤镜( ...

  9. Cow Contest---poj3660

    题目链接:http://poj.org/problem?id=3660 题意:有n头牛,m个关系,a b意思是a能打败b:求能确定排名的有几个: 如果一头牛被x头牛打败,并且可以打败y头牛,如果x+y ...

  10. CentOS网卡配置大全

    持续更新中... 1.配置机器名 2.配置网卡属性 3.问题解决 3.1解决网卡经常需要手动重连问题 vi /etc/sysconfig/network-scripts/ifcfg-ens33 把ON ...