2

(MS Wordオブジェクトモデルを介して、またはファイルを編集して)いくつかのカスタムデータ(おそらく別のファイル?)を追加することは可能ですか?

MS Word でドキュメントを開き、変更し、保存した後、そのデータは保持されますか?

(レポートのエクスポート中にいくつかの追跡データを docx に入れる必要があります。カスタム データはインポート中に再び使用されます)

4

5 に答える 5

9

はい。それはかなり簡単ですが、私の知る限り、文書化されていません(まったく、または非常によく)。Office ドキュメント (.docx、.xslx、.pptx) に.iniファイルを追加して、ドキュメントと一緒に "持ち運び" したいとします (つまり、 .docxを電子メールで誰かに送信し、yourfile .iniが必要だとします)。 DOCX を開いた人が何らかの変更を加えて保存し、あなたに送り返したとしても、 yourdoc .docxにとどまるように追加しました)。

  1. ドキュメントの拡張子を .zipに変更します。解凍します。
  2. ルート フォルダーで [Content_Types].xmlファイルを見つけて開きます。
  3. <Type/>ルート要素のすぐ下に追加<Default Extension="ini" ContentType="custom/ini"/>します (注 - 別のファイルの場合は、拡張子が追加するファイルと Extention一致し、属性がそれと一致することを確認してください。 ContentType属性の場合、それは何でもかまいません)。
  4. filename .iniファイルをパッケージに追加します。ルート、 /wordパス、/word/MyIniFilesなどの新しいフォルダーなど、どこにでも追加できます。
  5. 次に、ファイルとドキュメントの間の関係を設定します。そうしないと、ファイルはドキュメントと一緒に持ち運べません。\ word_rels \document.xml.relsファイルに移動し、属性が一意の名前(rID Xまたはそのようなものに固執するのが最善) で<Relationships/> あるような場所の下に追加し、URI (ほぼすべての) を反映し、追加したファイルの相対パスです。document.xmlと同じルートにある/wordフォルダーにabcpy.iniを 追加したので、相対パスは単なるファイル名です。myIniFilesと呼ばれる/wordの下のフォルダーに追加した 場合、<Relationship Id="rd1" Type="http://schemas.microsoft.com/office/2007/relationships/ini" Target="abcpy.ini" />IdTypeTypeTargetTargetmyIniFiles/abcpy.iniになります
  6. すべてを保存します。ファイルをルートから再圧縮し、ドキュメントの名前を元の名前に戻し、拡張子を.docxに戻します。元のファイルをコピーして貼り付けます。終わり。

Open XML パッケージ エディター ( VSTO Power Tools for VS2008 の一部、または最近リリースされた VS 2010のスタンドアロン) をお持ちの場合は、VS を使用してこの作業の一部を行うことができますが、本質的には同じです。TargetequalsNameなどのように、用語は異なります。

これはある種のハックではないことに注意してください。Microsoft 自身は、Office 2010 で新しい「Artistic Effects」で変更された画像に対してまったく同じ手法を使用しています。元の画像ファイルはHDPhotoタイプに移植され、変更された画像は png または jpg として保存されます (これらは、クライアント)。hdphoto (.wdp拡張子付き) はドキュメントと一緒に移動しますが、Word、PowerPoint などで実際に表示されることはありません。

于 2010-06-27T18:54:10.513 に答える
3

はい、可能です。Word には、任意の XML ドキュメントを Word ドキュメントに埋め込むことができる機能があります。この機能はカスタム XMLと呼ばれます。

埋め込まれたドキュメントは、ドキュメントの編集時に保持され、VBA を使用してプログラムで、または Word 2007 で導入されたコンテンツ コントロールを使用して、ドキュメント内からアクセスすることもできます。

Word では埋め込みコンテンツが XML である必要がありますが、base64 エンコーディングを使用してバイナリ コンテンツを XML に埋め込むことができるため、純粋な XML データに限定されるわけではありません。

MSDN には、カスタム XML 部分を .docx ファイルに追加する方法を示す C# のサンプルがあります。

方法: Microsoft Office を起動せずにドキュメントにカスタム XML パーツを追加する

于 2010-06-26T12:03:24.743 に答える
2

完全を期すために、フィールドDocVariableも使用できます。これは、実際にはドキュメント プロパティと同じようにブックマークですが、少なくとも名前付けに関してはより自由です。これらは、比較的小さな情報に最適です。完全なファイルを追加する場合は、他の方法の方が適している場合があります。

見る:

WordでのDOCVARIABLEとは

于 2010-07-24T16:50:03.120 に答える
1

いいえ、この zip ファイルに何かを追加すると、Word はファイルの破損について不平を言い始めます。しかし、車輪を再発明しないでください。Word ドキュメントは、複数の異なるドキュメント プロパティを持つことができます。それを使うだけです。 http://office.microsoft.com/en-gb/word-help/add-property-information-to-a-document-HA010163766.aspx

于 2010-06-22T15:40:21.907 に答える