0

私のワード文書にはたくさんの表があります。これらのテーブルを一意に識別したいのですが、Microsoft Office はそれらに一意の識別子 (ID) を提供しません。では、Microsoft Word テーブルを一意に識別する方法はありますか?

問題:
ユーザーが表を含む Word ファイルを提供してくれました。それらを画像に変換する必要があります。ユーザーが同じファイルを提供しても、テーブルの内容が更新されている場合は、そのイメージを更新する必要があります。私の場合、最初に割り当てたイメージの名前を変更できないため、すべてのイメージを削除して再度生成することはできません。

私が試したこと。

  1. Word doc の xml を生成し、ID または一意の識別子があることを確認します。しかし、そのようなものは存在しません。
  2. テーブルのプロパティを見てください。フィールドの代替テキストは 1 つだけですが、ユーザーが変更できるため信頼できません。
4

1 に答える 1

2

これは、テーブルが 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 は、ユーザーがテーブルを追加したり移動したりすると変更されます...

あなたができることは、その識別子を自分で追加することです:

テーブルに特定の置換文字列を追加します (例: 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>

これらのプロパティは読みやすく、テーブル内にあるため、テーブル要素を解析するだけでよいため、最初の可能性を使用します。

于 2013-07-22T14:05:25.477 に答える