我的word文档中有很多表。我想唯一地识别那些表,但微软办公软件没有为它们提供任何唯一的标识符(ID)。那么,有什么方法可以唯一地识别微软单词表吗?
问题:
用户为我提供了带有表格的word文件。我必须把它们转换成图像。如果用户向我提供了相同的文件,但表的内容已经更新,那么我必须更新该图像。所有删除并再次生成所有图像在我的情况下不起作用,因为我无法更改我第一次分配给它的图像的名称。
我尝试了什么
- 生成word文档的xml,并查看是否有任何id或唯一标识符。但根本不存在这样的东西
- 查看表属性,其中它们只有一个字段alt Text,但仍然不可用,因为用户可以更改它
这就是表在XML(3*3)中的样子:
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="Grilledutableau"/>
<w:tblW w:type="auto" w:w="0"/>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="0" w:lastRow="0" w:noHBand="0" w:noVBand="1" w:val="04A0"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="3070"/>
<w:gridCol w:w="3071"/>
<w:gridCol w:w="3071"/>
</w:tblGrid>
<w:tr w:rsidR="00153204" w:rsidTr="00153204">
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3070"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
</w:tr>
<w:tr w:rsidR="00153204" w:rsidTr="00153204">
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3070"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
</w:tr>
<w:tr w:rsidR="00153204" w:rsidTr="00153204">
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3070"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:type="dxa" w:w="3071"/>
</w:tcPr>
<w:p w:rsidR="00153204" w:rsidRDefault="00153204"/>
</w:tc>
</w:tr>
</w:tbl>
这里有一些ID,但如果用户添加一个表、移动它、。。。
您可以自己添加该标识符:
向表中添加特定的替换字符串(例如ID:1)
这会在w:tblCaption
属性中添加此id:
<w:tblPr>
<w:tblStyle w:val="Grilledutableau"/>
<w:tblW w:type="auto" w:w="0"/>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="0" w:lastRow="0" w:noHBand="0" w:noVBand="1" w:val="04A0"/>
<w:tblCaption w:val="ID:1"/>
</w:tblPr>
要在word中添加此标题:右键单击表格->属性->文本/替换
在要识别的每个表之前放置一些文本元素
这将在表之前添加以下xml
<w:p w:rsidR="006B0CC1" w:rsidRDefault="006B0CC1">
<w:r>
<w:t>ID :1</w:t>
</w:r>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
我会选择第一种可能性,因为读取这些属性很容易,而且它们在表中,所以您只需要解析表元素。