为什么 python-docx 在应该为空时返回带有文本的单元格?

why is python-docx returning cells with text when should be empty?

我有一个使用 pdf2docx 库从 pdf 转换而来的 docx 文档。结果看起来不错,但如果我使用 python-docx 加载 docx 文档,它会创建一个 table,其中包含包含文本而不是空单元格的单元格。单元格中填充了特定单元格上方一行的单元格中的文本。

Table 是这样的:

table 包含三行。第一行应包含值为 [Barriere, Bonuslevel, Cap, Beobachtungszeitraum, Anfangl] 的单元格,第二行和第三行除最后一列外应为空。 但是如果可以在调试中看到空单元格包含这样的文本值:

Text Basiswert 在第一个单元格和第六个单元格中。第六个单元格应该是空的。我打开了 Docx 文档的 XML 文件,一切正常所以我认为问题出在 python-docx 库中。有人遇到过同样的问题吗?

编辑:这篇文章很有价值:

https://python-docx.readthedocs.io/en/latest/dev/analysis/features/table/cell-merge.html

基本上复制的单元格是连续单元格,表示单元格合并为水平或垂直 跨度,但我仍然不知道如何从 python-docx API?

中读取此信息

python-docx 中 table 个单元格的寻址基于 网格布局 。基本上,网格是在完成任何单元格合并之前的所有单元格。在网格布局中有 n 行 m 列和 m * n 个单元格;每个行列 combination/intersection 都有一个单元格。

当您处理“合并”到其他单元格中的网格单元格时,将返回合并(矩形)区域的左上角成员。

这意味着如果 table 包含合并的单元格,某些内容会返回不止一次。