生成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. 【LOJ6254】最优卡组 堆(模拟搜索)

    [LOJ6254]最优卡组 题面 题解:常用的用堆模拟搜索套路(当然也可以二分).先将每个卡包里的卡从大到小排序,然后将所有卡包按(最大值-次大值)从小到大排序,并提前处理掉只有一张卡的卡包. 我们将 ...

  2. Kibana在Linux上安装部署及使用说明

    Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www. ...

  3. Print or Cout an Unsigned Char Variable 打印无符号字符

    在C++中,unsigned char用来表示一个字节,也就是8位大小的值,那么我们如何来打印出其值呢,用cout直接打印会乱码,我们可以通过下面两种方法来打印: cout << stat ...

  4. java 类中的细节

    java 中类: 类是用于描述统一类型的对象的一个抽象的概念,类中定义了这一类对象所因具有的静态和动态属性. 举例: 瓶子静态: 有一个口.长长的形状-->java类中的成员变量动态属性: 可以 ...

  5. 基于元胞自动机NaSch模型的多车道手动-自动混合驾驶仿真模型的Matlab实现

    模型的建立基本来自于:http://www.doc88.com/p-2078634086043.html 花了一天半的时间用新学会的matlab实现了一下. ───────────────────── ...

  6. POJ 1637 - Sightseeing tour - [最大流解决混合图欧拉回路]

    嗯,这是我上一篇文章说的那本宝典的第二题,我只想说,真TM是本宝典……做的我又痛苦又激动……(我感觉ACM的日常尽在这张表情中了) 题目链接:http://poj.org/problem?id=163 ...

  7. $w=$mysqli->query($sql);

    $db = new mysqli('localhost', 'root', '', 'w'); if($db->connect_error){ die('Connect Error ( '.$d ...

  8. 设置tabBar中间的按钮比较大的发布

    MainTabBarController.h UITabBarItem *item = [self.tabBar.items objectAtIndex:index]; [item setTitle: ...

  9. 洛谷 P4201 设计路线 [NOI2008] 树形dp

    正解:树形dp 解题报告: 大概是第一道NOI的题目?有点激动嘻嘻 然后先放个传送门 先大概港下这题的题意是啥qwq 大概就是给一棵树,然后可以选若干条链把链上的所有边的边权变成0,但是这些链不能有交 ...

  10. Git使用常见问题脚本

    receive.denyCurrentBranch 这是由于git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码: [receive]     denyCurrentBr ...