用Aspose.Words 从Word文档中提取表格数据

对于某些项目,开发人员需要从Word文档中提取数据并导出到数据库。最大的挑战是必须支持现有Word文档。

相同格式且带多个数据块的Word文档有成千上万。该文档格式并不是设计来被另一个系统所读取的。这意味着,没有书签、合并字段、从标准指令识别实际数据的方式等。还好,所有输入字段都在表格内,但这些表格也是不同的格式,一些是单行/单元格,另一些则变化多端。

我们可以用Aspose.Words来创建和操作Word文档。

以C#创建一个类似的表格模型从而稍后当读取文档的时候我们可以用上它。

如下所示,你可以看到创建的名为WordDocumentTable的类,带有三个属性:TableID,RowIDColumnID,如之前所说的,我们没有支持TableID/RowIDs,这些属性仅仅暗示着Word文档的位置。开始索引假定为0。

<span style="font-family:Microsoft YaHei;font-size:14px;">public class WordDocumentTable
{ public WordDocumentTable(int PiTableID) {  MiTableID = PiTableID; }public WordDocumentTable(int PiTableID, int PiColumnID) {  MiTableID = PiTableID;  MiColumnID = PiColumnID; }public WordDocumentTable(int PiTableID, int PiColumnID, int PiRowID) {  MiTableID = PiTableID;  MiColumnID = PiColumnID;  MiRowID = PiRowID; }private int MiTableID = 0;public int TableID {  get { return MiTableID; }  set { MiTableID = value; } }        private int MiRowID = 0;    public int RowID {  get { return MiRowID; }  set { MiRowID = value; } }private int MiColumnID = 0;    public int ColumnID {  get { return MiColumnID; }  set { MiColumnID = value; } }
}</span>

现在来到提取环节。如下所示,你将看到我想要从文档中读取的表格单元格的集。

<span style="font-family:Microsoft YaHei;font-size:14px;">private List<WordDocumentTable> WordDocumentTables
{  get  {    List<WordDocumentTable> wordDocTable = new List<WordDocumentTable>();      //Reads the data from the first Table of the document.    wordDocTable.Add(new WordDocumentTable(0));      //Reads the data from the second table and its second column. //This table has only one row.    wordDocTable.Add(new WordDocumentTable(1, 1));      //Reads the data from third table, second row and second cell.    wordDocTable.Add(new WordDocumentTable(2, 1, 1));  return wordDocTable;  }
}</span>

下面是从基于表格、行和单元格的Aspose.Words文档提取数据。

<span style="font-family:Microsoft YaHei;font-size:14px;">public void ExtractTableData(byte[] PobjData)
{          using (MemoryStream LobjStream = new MemoryStream(PobjData)) {  Document LobjAsposeDocument = new Document(LobjStream);     foreach(WordDocumentTable wordDocTable in WordDocumentTables)  {   Aspose.Words.Tables.Table table = (Aspose.Words.Tables.Table)LobjAsposeDocument.GetChild(NodeType.Table, wordDocTable.TableID, true);   string cellData = table.Range.Text;if (wordDocTable.ColumnID > 0)   {    if (wordDocTable.RowID == 0)    {     NodeCollection LobjCells = table.GetChildNodes(NodeType.Cell, true);     cellData = LobjCells[wordDocTable.ColumnID].ToTxt();}    else    {     NodeCollection LobjRows = table.GetChildNodes(NodeType.Row, true);     cellData = ((Row)(LobjRows[wordDocTable.RowID])).Cells[wordDocTable.ColumnID].ToTxt();    }   }Console.WriteLine(String.Format("Data in Table {0}, Row {1}, Column {2} : {3}",           wordDocTable.TableID,          wordDocTable.RowID,          wordDocTable.ColumnID,          cellData);              } }
}</span>

需要引入的命名空间:

<span style="font-family:Microsoft YaHei;font-size:14px;">using Aspose.Words;
using Aspose.Words.Tables;</span>

Aspose.Words.dll 14.0破解版下载地址:

>> http://download.csdn.net/detail/xiaosongaspnet/7702461

用Aspose.Words 从Word文档中提取表格数据相关推荐

  1. python合并word表格单元格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...

    同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护.由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大.人工核对整理既费时又费力 ...

  2. Python3-word文档操作(五):利用python修改word文档中的表格数据

    1. 简介: 本篇继续学习python操作word文档的相关知识.本篇主要学习: 1)如何获取一个已经存在文档中的表格的内容: 2)如何修改一个已经存在文档中的表格的内容: 2. 获取word文档中的 ...

  3. 如何将word文档中的表格数据快速转化成sql语句添加到数据库中?——正则表达式

    当我们得到word文档的数据的时候,想要在数据库建成相应的表,原始人(曾经的我)选择一条条ctrl C V 复制粘贴,耗时且繁琐,毫无技术性(不高级). java情报局研究中心的组长告诉我,使用 id ...

  4. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

    点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...

  5. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  6. Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

    图像通常用于表示 Word 文档中的重要信息.在文本旁边包含图像使内容更具吸引力.在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像.为此,本文介绍了如何使用 Java 从 Word ...

  7. Word处理控件Aspose.Words功能演示:从 C# 中的 Word 文档中提取图像

    图像在说明 Word 文档中的关键信息方面发挥着重要作用.此外,它们使文档更具吸引力并改善其呈现方式.作为一名程序员,您可能会得到一份工作来提取嵌入在 Word DOCX 或 DOC 文档中的图像.为 ...

  8. Word处理控件Aspose.Words功能演示:在 C# 中从 Word 文档中提取文本

    从 Word 文档中提取文本通常在不同的场景中执行.例如,分析文本,提取文档的特定部分并将它们组合成单个文档,等等.在本文中,您将学习如何使用 C# 以编程方式从 Word 文档中提取文本.此外,我们 ...

  9. WORD文档中的表格:自定义方式的批处理,增删行列和内容

    WORD文档中的表格:自定义方式的批处理,增删行列和内容: 大家有没有遇到需要处理WORD文档中的表格,表格多,需要大量的重复性工作: office提供了宏录制方式,可以编辑风格,内容,但是针对增删表 ...

最新文章

  1. javascript与java正则表达式写法的区别
  2. C++STL常用遍历算法
  3. Easyjs 细说Javascript里的 闭包(Closure)
  4. 如何实现Punycode中文域名转码
  5. 接口批量同步数据_千手接口平台+电商ERP,助德嵘大药房征战拼多多
  6. CEF3:https 请求返回状态码canceled
  7. android elf 加固_APK一键自动化加固脚本
  8. 小米手机又一产品线退场,大步迈向高端市场!
  9. centos下打包electron_从零搭建Electron应用 的一系列简单的 Demo
  10. UVA 558 SPFA 判断负环
  11. 编译或者运行找不到库解决
  12. POJ NOI MATH-7647 余数相同问题
  13. ZOJ - 2865 A very easy task
  14. 设计模式之一(单例模式)
  15. 利用React 和ant-design 搭建cnode项目的随笔
  16. Imputation:用于数据插补的SPSS宏
  17. opencv-之求直线的斜率
  18. 什么是 Google Play服务
  19. 高并发环境如何有效缓解带宽压力
  20. 数据库应用----Mongodb 4.0 版本 基础操作---复制集,选举方法、部署认证 (二)

热门文章

  1. php json函数参数传递,JSON作为函数参数时应该如何使用
  2. html带取消的谈窗框,HTML参考
  3. ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️
  4. java排列组合二维数组_JavaScript 二维数组排列组合2
  5. oracle merge into 优化,ORACLE 10g 的 merge into用法
  6. java 中PriorityQueue优先级队列使用方法
  7. 汉文博士 0.5.7.2356 版发布
  8. select 与case 以及函数练习
  9. 计数显示器c语言程序,51单片机计数显示器Proteus仿真程序
  10. java笔试面试题---基础部分4