生成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. Unity3D笔记 英保通一

    一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...

  2. 兵器簿之cocoaPods的安装和使用

    以前添加第三方库的时候总是直接去Github下载然后引入,但是如果这些第三方库发生了更新,我们还需要手动去更新项目,所以现在引入之前一直想弄都一直没有弄的cocoaPods,现在演示一把过程 其实非常 ...

  3. Spark2 Linear Regression线性回归

    回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好. 数学上,ElasticNet被定义为L1和L2正则化项的凸组合: 通过适当设置α,Ela ...

  4. Qt qDebug() 的使用方法

    在Qt程序调试的时候,经常需要打印一些变量,那么我们就需要使用qDebug()函数,这种函数有两种使用方法,如下所示: QString s = "Jack"; qDebug() & ...

  5. FileStream实现多线程断点续传(已封装)

    处理文件分片 处理缺失的分片文件 合并分片文件 MD5验证文件 using System; using System.Collections.Generic; using System.IO; usi ...

  6. 170815、redis3.0安装配置

    下载地址http://redis.io/download 安装步骤: 1 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到linux /usr/local文件夹下 2 ...

  7. hdu5692【dfs序】【线段树】

    Snacks Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  8. UOJ #146. 【NOIP2015】信息传递 连通分量 tarjan模板题

    http://uoj.ac/problem/146 题解:强连通分量 tarjan模板题.同时试了一下codeblock #include<bits/stdc++.h> using nam ...

  9. RESTful URL设计指南(转)

    add by zhj: <RESTful Web Services Cookbook>这本书详细介绍了RESTFUL API的设计. 一般来说,一个好的URL,简单明了.这里有一个问题,对 ...

  10. mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数

    查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...