生成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;}

这个方法中可以同时给多个附件赋值;

原文地址:https://www.cnblogs.com/wmqiang/p/10526729.html

时间: 2024-12-14 08:25:13

生成word附件和word域动态赋值的相关文章

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

转: Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: Word生成结果: 图表 2需要的jar包:(具体jar可自行去maven下载) 注意:需要严格按照上面版本下载jar包,否则可能出现jar包之间不能匹配的导致代码报错 各种 jar包都可以在这里下载: https://mvnrepository.com/ Tes

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

将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32下 语法介绍: 将一个关于JACOB的代码分成下面几个步骤: 1) ActiveXComponent ax = new ActiveXComponent("a1")://构建ActiveX组件实例 其中的a1的值和你需要调用的ActiveX控件有关 MS控件名 a1的值 InternetE

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

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

C#,WPF使用word模板导出word文档

使用word模板导出word文档,首先需要在word模板中插入书签: 根据创建的书签名和位置,将需要写入的内容插入到word文件中. 需要引用  Microsoft.Office.Interop.Word;在添加引用-程序集中搜索可以找到. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows; usin

Word Search 和 Word Search Ⅱ

Word Search 和 Word Search Ⅱ Word Search Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighbo

URL动态赋值

url动态赋值: 指的是url中包含{selector},即花括号括起来的jQuery选择器,当提交该url时,框架会自动将selector对应元素的值替换到花括号所占区域. (感觉实现了一点类似el表达式的效果) 后面的文档中,凡是标记有D-Url字样的URL参数,均支持动态赋值,通常支持动态赋值的url,同时支持warn参数,warn参数携带动态赋值不成功的提示信息. 我没有测试成功,后面成功了补上来. 只有在url属性中可以看到D-Url的url才可以动态赋值,例如: <script ty

Jquery为下拉列表动态赋值与取值,取索引

接触前端也不久对jquery用的也只是皮毛,写过去感觉能复用的发出来,大家指点下 1.下拉列表动态赋值 function initddlYear() { var mydate = new Date(); var startYear = mydate.getFullYear() - 50; var endYear = mydate.getFullYear() + 50; for (var i = startYear; i < endYear; i++) { jQuery("#ddlYear&

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

最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场,几乎没有人用这个版本了, 所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的文字内容即可,其中的文字样式.图片等信息可以忽略,也不用直接操作 word 文件, 所以我们选择 用 apache 的 POI 进行读取. 读取 20

javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表

原文 javascript如何解析json对象并动态赋值到select列表 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号):“‘名称/值’对”之间使用“,”(逗号)分隔. 在开