通过office.js以JSON格式从word文档中的表格收集数据

问题描述 投票:0回答:1

我在Word文档中有一个表格,它会合并单元格,我正在尝试使用office.js通过word插件提取数据

示例:

  • 表格(带有合并的列)

我想收集 json 中的数据,即对于每个标头,有一个数组指出它们存在的值,即

  • 预期结果表
{
   "Header 0,0": [['Cell 1.1', 'Cell 2.1']],
   "Header 3": [['Cell 3']],
   "Header 4": [['Cell 4']],
   "Header 5,6": [['Cell 5.1', 'Cell 6.1']],
}

目前我已经尝试了通过 office.js Table 类对象从表中获取值并直接迭代这些值的方法,但我从中得到了以下 2D 数组,

[
   ['Header 0,0', 'Header 3', 'Header 4', 'Header 5,6'],
   ['Cell 1.1', 'Cell 2.1', 'Cell 3', 'Cell 4', 'Cell 5.1', 'Cell 6.1']
]

根据上面的值,我们将无法形成标题与其数据单元格的关系。

javascript ms-word office365 office-js office-addins
1个回答
0
投票

我会采取一些方法来解决这个问题。

第一个是迄今为止最简单的,但也是最不健壮的,因为如果标头发生更改,代码需要重新工作。

基本上,如果标题不改变,只需构建一个映射对象,例如:

{
   "Header 0,0": 2,
   "Header 3": 1,
   "Header 4": 1,
   "Header 5,6": 2,
}

然后您可以获取上面显示的数组,迭代它并构建您想要的输出。

其次是在获取值之前取消合并标题单元格,构建所需的输出并重新合并单元格

第三种方法是获取一个定义合并标头范围的对象,并迭代您的值以获得所需的输出。

我简单浏览了一下 API,但不幸的是,我找不到方法 2 或 3 的任何内容,不过,这两种方法都可以通过 Office-JS API 在 Excel 中实现。

阅读此答案 --> 如何使用 Javascript 为 Microsoft Word 插件拆分 TableCell?

让我觉得任一选项都是最简单的路线,但您也可以使用 OpenXML 等纯 Web 技术来读取表格并收集信息。

这里有一些链接可以帮助您找到正确的方向 -->

https://learn.microsoft.com/en-us/office/dev/add-ins/word/create-better-add-ins-for-word-with-office-open-xml

https://github.com/OfficeDev/Office-Add-in-samples/tree/main/Samples/word-add-in-load-and-write-open-xml

https://learn.microsoft.com/en-us/office/open-xml/word/how-to-insert-a-table-into-a-word-processing-document?tabs=cs-0% 2Ccs-1%2Ccs-2%2Ccs-3%2Ccs-4%2Ccs#表结构

https://stackoverflow.com/a/50347584/5079799

https://learn.microsoft.com/en-us/samples/officedev/pnp-officeaddins/word-get-set-edit-ooxml/

https://jiteshkumawat.github.io/oxml.js/

正如我之前所说,可以使用 Excel Office-JS API,但根据我的理解,不能使用 word。由于您没有提供任何代码,所以我的答案中没有代码,如果您在实现解决方案时遇到困难,您可以通过 w/

code
开始新帖子。

© www.soinside.com 2019 - 2024. All rights reserved.