PageOffice既保存Word文件中指定区域的数据又保存整篇文件

一、首先在word文件中给需要在后台获取数据的区域设置以PO_开头的书签。

二、通过pageoffice在线打开文件并编辑保存。有两种打开文件的模式

1、普通编辑模式(docNormalEdit)

普通编辑模式就是简单的打开文件,分别设置SaveDataPage保存数据的方法和SaveFilePage保存文件的方法即可,保存文件和保存数据是两个方法,不能写在一起

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //设置保存数据的方法
        poCtrl.setSaveDataPage("/api/SaveDataAndFile/SaveData");
        //设置保存文档的方法
        poCtrl.setSaveFilePage("/api/SaveDataAndFile/save");
        //打开Word文档
        poCtrl.webOpen("G:\\doc\\word1.docx", OpenModeType.docNormalEdit, "张三");

2、表单提交模式(docSubmitForm)

提交模式打开文件默认是不可编辑的,将需要编辑的数据区域的Editing设置为true,其他与普通编辑模式打开一样

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage("/api/poserver.zz");//设置服务页面

        WordDocument wordDoc = new WordDocument();
        //打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
        DataRegion dataRegion1 = wordDoc.openDataRegion("PO_userName");
        //设置DataRegion的可编辑性
        dataRegion1.setEditing(true);
        DataRegion dataRegion2 = wordDoc.openDataRegion("PO_deptName");
        dataRegion2.setEditing(true);
        DataRegion dataRegion3 = wordDoc.openDataRegion("PO_cause");
        dataRegion3.setEditing(true);
        poCtrl.setWriter(wordDoc);
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //设置保存数据的方法
        poCtrl.setSaveDataPage("/api/SaveDataAndFile/SaveData");
        //设置保存文档的方法
        poCtrl.setSaveFilePage("/api/SaveDataAndFile/save");
        //打开Word文档
        poCtrl.webOpen("G:\\doc\\word1.docx", OpenModeType.docSubmitForm, "张三");

三、保存文件

@RequestMapping("save")
    public void save(HttpServletRequest request, HttpServletResponse response) {
        FileSaver fs = new FileSaver(request, response);
        fs.saveToFile("G:\\doc\\" + fs.getFileName());
        fs.close();
    }

这是本地打开word文件后的效果,书签的内容是在线编辑保存的

四、保存数据

获取到的数据可以保存到数据库或者其他地方,具体保存到哪里与pageoffice没有直接关系,根据自己的业务逻辑处理即可,我是直接在后台输出了下

@RequestMapping("SaveData")
    public void saveData(HttpServletRequest request, HttpServletResponse response) {
        com.zhuozhengsoft.pageoffice.wordreader.WordDocument doc = new com.zhuozhengsoft.pageoffice.wordreader.WordDocument(request, response);
        //获取提交的数值
        String dataUserName = doc.openDataRegion("PO_userName").getValue();
        String dataDeptName = doc.openDataRegion("PO_deptName").getValue();
        String cause = doc.openDataRegion("PO_cause").getValue();
        System.out.println("姓名==="+dataUserName);
        System.out.println("部门==="+dataDeptName);
        System.out.println("原因==="+cause);

        doc.close();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值