当前位置: 首页 > article >正文

提取数据区域中表格

  • 查看本示例演示效果
  • 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码

在实际的开发过程中,有时会遇到希望提取Word文档中表格数据保存到服务器的需求,此时可以使用PageOffice提取Word文档数据区域中表格数据的功能。在服务器端创建PageOffice的Word命名空间中的WordDocumentReader对象并获取到DataRegion对象,再调用DataRegion对象的openTable方法就可以获得表格对象,进而获取并处理各个单元格的值,比如保存到数据库。

注意

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

后端代码

在后端编写代码调用webOpen方法以表单提交模式docSubmitForm打开文件,设置数据区域Editing属性为true,并设置接收处理PageOffice客户端控件提交数据的服务器端后台方法为:saveData,用户在线编辑Word文档数据区域中表格数据,点保存时,服务器端后台方法saveData中就可以通过DataRegion对象就可以获取到完整的表格数据。

注意

由于整个数据区域都是可编辑的,数据区域中的表格也是可以编辑的,包括样式、行列等,所以此实现方式对用户的操作有一定的要求,就是让用户不能随便修改表格的结构,行数、列数、合并单元格等操作,否则服务器端获取表格数据的代码就会无法确定每个单元格数据的含义是什么,也就无法做进一步处理。

    PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);WordDocumentWriter wordDoc = new WordDocumentWriter();//打开数据区域DataRegionWriter dTable = wordDoc.openDataRegion("PO_table");//设置数据区域可编辑性dTable.setEditing(true);poCtrl.setWriter(wordDoc);//此行必须poCtrl.setSaveDataPage("saveData");//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式poCtrl.webOpen("D:\\documents\\test.docx", OpenModeType.docSubmitForm, "张三");

在服务器端后台方法saveData中,创建com.zhuozhengsoft.pageoffice.word命名空间中的WordDocumentReader对象,提取数据区域中的表格。

    WordDocumentReader doc = new WordDocumentReader(request, response);DataRegionReader dataReg = doc.openDataRegion("PO_table");TableReader table = dataReg.openTable(1);StringBuilder dataStr = new StringBuilder();for (int i = 1; i <= table.getRowsCount(); i++) {dataStr.append("<div style='width:220px;'>");for (int j = 1; j <= table.getColumnsCount(); j++) {dataStr.append("<div style='float:left;width:70px;border:1px solid red;'>" + table.openCellRC(i, j).getValue() + "</div>");}dataStr.append("</div>");}//可以在此处编写代码把dataStr输出到控制台,查看提交数据doc.close();

 参考链接:提取数据区域中表格 | PageOffice 开发者中心

http://www.lryc.cn/news/2404838.html

相关文章:

  • 【设计模式-5】设计模式的总结
  • 【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
  • 链表好题-多种实现
  • oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
  • OneNet + openssl + MTLL
  • 分享两个日常办公软件:uTools、PixPin
  • Golang基础学习
  • [学习] GNSS信号跟踪环路原理、设计与仿真(仿真代码)
  • Python实例题:Python计算微积分
  • 如何判断指针是否需要释放?
  • Spark 之 AQE
  • 随访系统安装的记录
  • NLP学习路线图(二十四):门控循环单元(GRU)
  • Doris查询Hive数据:实现高效跨数据源分析的实践指南
  • vsCode使用本地低版本node启动配置文件
  • 在Ubuntu上使用 dd 工具制作U盘启动盘
  • el-table表格增加序号列index vue2和vue3的写法
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • Spark 之 DataFrame 开发
  • 嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
  • 机器学习KNN算法全解析:从原理到实战
  • 【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)
  • FPGA定点和浮点数学运算-实例对比
  • MySQL Binlog 数据恢复全指南
  • python版若依框架开发:后端开发规范
  • Linux编程:2、进程基础知识
  • 时序数据库IoTDB与EdgeX Foundry集成适配服务介绍
  • Android第十二次面试-多线程和字符串算法总结
  • ES6——数组扩展之Set数组
  • Cursor Rules 使用