Stonelee's Blog

如无必要,勿增实体

如何解析word中存在合并单元格的表格

分享到: 更多

对于word中存在合并单元格的表格:

下图是对Cells遍历的结果,True表示该行该列的单元格存在,False表示不存在。

可以看到,word表格中行和列的合并单元格(Merge)机制是不一样的。 Cells数组在计算时会无视行中的合并,将合并单元格作为普通格,依次进行存储,合并后空出的项排在本行的最后。 而在计算列时,会在第一次遇到合并单元格时将其进行存储,其后遇到时保留其指针,但是将该格剔除(不太好描述,可以理解为将其作为None值保存)。这是符合我们一般理解的。

问题来了: 在存在合并单元格的行中,如何知晓哪些行被合并?

从网上搜索解决方案,在 这篇帖子中提到,在word可以支持合并单元格操作之前,VBA中就实现了table对象,但是一直没有升级。因此当表格中存在合并单元格时,表格内容无法完整获取。

目前想到的思路是判断每个单元格的宽度,用单元格数量完整的行做参照,判断单元格数量不全的行每个单元格的宽度,但是这个方案只对标准的合并单元格有效,宽度略微有所调整就不行了。

Excel没有这种问题,难道Word的表格就是个纯粹的杯具吗?

解决方案待续~,期待大牛解答。

Comments