PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。

注意

本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

在实际的开发过程中,经常会遇到提取Word文档中指定位置的数据保存到数据库中的需求,PageOffice客户端控件即支持在线保存Word文件,也支持Word文档中的指定位置的数据或所有的数据提交到服务器端。在服务器端创建PageOffice的WordReader命名空间中的WordDocument对象,就可以获取到Word指定的数据。

注意

PageOffice获取Word文档中指定位置的数据,是通过调用PageOffice获取数据区域的功能,实现此目的。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域。

后端代码

在后端编写代码调用webOpen方法以表单提交模式 docSubmitForm 打开文件。

设置接收处理PageOffice客户端控件提交数据的服务器端后台方法为:saveData

    PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

    WordDocument wordDoc = new WordDocument();
    //打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
    DataRegion dataRegion1 = wordDoc.openDataRegion("PO_userName");
    //设置DataRegion的可编辑性
    dataRegion1.setEditing(true);
    //为DataRegion赋值,此处的值可在页面中打开Word文档后自己进行修改
    dataRegion1.setValue("");

    DataRegion dataRegion2 = wordDoc.openDataRegion("PO_deptName");
    dataRegion2.setEditing(true);
    dataRegion2.setValue("");

    poCtrl.setWriter(wordDoc);//此行必须
    poCtrl.setSaveDataPage("saveData");//此行必须
    //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
    poCtrl.webOpen("D:\\documents\\test.docx", OpenModeType.docSubmitForm, "张三");

在服务器端后台方法saveData中,创建com.zhuozhengsoft.pageoffice.wordreader命名空间中的对象,提取各数据区域的数据。您可以在此方法中编写代码,把获取到的数据保存到对应的数据库表中。

    WordDocument doc = new WordDocument(request, response);
    //获取提交的数值
    DataRegion dataUserName = doc.openDataRegion("PO_userName");
    DataRegion dataDeptName = doc.openDataRegion("PO_deptName");
    String content = "";
    content += "员工姓名:" + dataUserName.getValue();
    content += "部门名称:" + dataDeptName.getValue();
    System.out.println("获取的数据 " + content);// 此处只是为了展示一下后台获取到的数据
    doc.close();

参考链接:https://pageoffice.cn/pages/10bd42/