次の方法で共有


リレーションシップ ID を受け取る新しいドキュメント パーツをパッケージに追加する

このトピックでは、Open XML SDK for Office のクラスを使用して、ワープロ ドキュメントのリレーションシップ Id パラメーターを受け取るドキュメント パーツ (ファイル) を追加する方法について説明します。


パッケージとドキュメント パーツ

Open XML ドキュメントはパッケージとして格納され、その形式は ISO/IEC 29500 によって定義されます。 パッケージには、それらの間のリレーションシップを持つ複数のパーツを含めることができます。 パーツ間の関係によって、ドキュメントのカテゴリが制御されます。 ドキュメントは、パッケージリレーションシップアイテムにメインドキュメントパーツとの関係が含まれている場合、ワープロドキュメントとして定義できます。 パッケージリレーションシップ項目にプレゼンテーション パーツとのリレーションシップが含まれている場合は、プレゼンテーション ドキュメントとして定義できます。 パッケージリレーションシップアイテムにブックパーツとのリレーションシップが含まれている場合は、スプレッドシートドキュメントとして定義されます。 このハウツー トピックでは、ワープロ ドキュメント パッケージを使用します。


WordProcessingML ドキュメントの構造

WordProcessingMLドキュメントの基本的なドキュメント構造は、document要素とbody要素で構成され、その後に段落を表す p などの 1 つ以上のブロック レベル要素が続きます。 段落には、1 つ以上の r 要素が含まれています。 rは、書式設定などのプロパティの共通セットを持つテキストの領域である run を表します。 実行には、1 つ以上の t 要素が含まれています。 t要素には、テキストの範囲が含まれています。 次のコード例は、"テキストの例" というテキストを含むドキュメントの WordprocessingML マークアップを示しています。

    <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
      <w:body>
        <w:p>
          <w:r>
            <w:t>Example text.</w:t>
          </w:r>
        </w:p>
      </w:body>
    </w:document>

Open XML SDK を使用すると、 WordprocessingML 要素に対応する厳密に型指定されたクラスを使用して、ドキュメント構造とコンテンツを作成できます。 これらのクラスは、 名前空間にあります。 次の表に、 documentbodyprt の各要素に対応するクラスのクラス名を示します。

WordprocessingML 要素 Open XML SDK クラス 説明
<document/> Document メイン ドキュメント パーツのルート要素。
<body/> Body ISO/IEC 29500 仕様で指定されている、段落、表、注釈などのブロック レベル構造のコンテナー
<p/> Paragraph 段落
<r/> Run セクション
<t/> Text さまざまなテキスト

WordprocessingML ドキュメントのパーツと要素の全体的な構造の詳細については、「 WordprocessingML ドキュメントの構造」を参照してください。


サンプル コードの動作のしくみ

このサンプル コードでは、まず Word 文書のパスを表すパラメーターを渡します。 次に、using ステートメント内に新しい WordprocessingDocument オブジェクトを作成します。

static void AddNewPart(string document)
{
    // Create a new word processing document.
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))

リレーションシップ ID rId1 を使用して、新しいワープロ ドキュメントに MainDocumentPart パーツを追加します。 また、新しいワープロ文書に CustomFilePropertiesPart パーツと CoreFilePropertiesPart も追加されます。

// Add the MainDocumentPart part in the new word processing document.
MainDocumentPart mainDocPart = wordDoc.AddMainDocumentPart();
mainDocPart.Document = new Document();

// Add the CustomFilePropertiesPart part in the new word processing document.
var customFilePropPart = wordDoc.AddCustomFilePropertiesPart();
customFilePropPart.Properties = new DocumentFormat.OpenXml.CustomProperties.Properties();

// Add the CoreFilePropertiesPart part in the new word processing document.
var coreFilePropPart = wordDoc.AddCoreFilePropertiesPart();
using (XmlTextWriter writer = new XmlTextWriter(coreFilePropPart.GetStream(FileMode.Create), System.Text.Encoding.UTF8))
{
    writer.WriteRaw("""
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" />
        """);
    writer.Flush();
}

次に、このコードは、realtionship IDs rId4、rId5、rId6 を含む新しいワープロ ドキュメントに、 DigitalSignatureOriginPart パーツ、 ExtendedFilePropertiesPart パーツ、および ThumbnailPart パーツを追加します。

注:

AddNewPart メソッドは、現在のドキュメント パーツから新しいドキュメント パーツへのリレーションシップを作成します。 このメソッドは、新しいドキュメント パーツを返します。 また、 メソッドを使用してドキュメント パーツを塗りつぶすこともできます。

サンプル コード

以下のコードでは、カスタム XML を含む新しいドキュメント パーツを外部ファイルから追加し、そのドキュメント パーツを設定します。 C# と Visual Basic の両方の完全なコード例を次に示します。

static void AddNewPart(string document)
{
    // Create a new word processing document.
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
    {
        // Add the MainDocumentPart part in the new word processing document.
        MainDocumentPart mainDocPart = wordDoc.AddMainDocumentPart();
        mainDocPart.Document = new Document();

        // Add the CustomFilePropertiesPart part in the new word processing document.
        var customFilePropPart = wordDoc.AddCustomFilePropertiesPart();
        customFilePropPart.Properties = new DocumentFormat.OpenXml.CustomProperties.Properties();

        // Add the CoreFilePropertiesPart part in the new word processing document.
        var coreFilePropPart = wordDoc.AddCoreFilePropertiesPart();
        using (XmlTextWriter writer = new XmlTextWriter(coreFilePropPart.GetStream(FileMode.Create), System.Text.Encoding.UTF8))
        {
            writer.WriteRaw("""
                <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" />
                """);
            writer.Flush();
        }
        // Add the DigitalSignatureOriginPart part in the new word processing document.
        wordDoc.AddNewPart<DigitalSignatureOriginPart>("rId4");

        // Add the ExtendedFilePropertiesPart part in the new word processing document.
        var extendedFilePropPart = wordDoc.AddNewPart<ExtendedFilePropertiesPart>("rId5");
        extendedFilePropPart.Properties = new DocumentFormat.OpenXml.ExtendedProperties.Properties();

        // Add the ThumbnailPart part in the new word processing document.
        wordDoc.AddNewPart<ThumbnailPart>("image/jpeg", "rId6");
    }
}

関連項目