はじめに

Aspose.Words for .NETを活用して、レポート、手紙、請求書などのパーソナライズされた文書の作成を自動化し、時間と手間を節約しましょう。このガイドでは、Aspose.Wordsメールマージプラグインを使用して.NETアプリケーション内で効率的でスケーラブルな文書生成を実現する方法について説明します。MS WordやOffice Interopは必要ありません。C#メールマージを利用したレポートの自動化を統合する方法を学び、レポートのワークフローを効率化できます。


目次:


メールマージとは?

メールマージは、さまざまなソースからのデータでテンプレートを埋め込むことにより、文書を動的に生成する方法論です。Aspose.Wordsを使用すると、次のようなタスクをシームレスに自動化できます。

  • 個別の詳細を含む手紙や請求書の生成。
  • XML、JSON、データベースのような構造化されたフォーマットのデータを使用した大量レポートの作成。これにより、C#およびAspose.Wordsを使用した動的レポート生成が可能になります。

メールマージのデータソース

Aspose.Wordsは多様なデータソースをサポートしています。

  • オブジェクト: クラスのインスタンスを使用してテンプレートを埋め込みます。
  • XML: 動的フィールド用に構造化されたデータをロードします。
  • JSON: モダンAPIとの統合が簡単です。
  • CSV: 大量の文書生成のための表形式データを活用します。
  • DataTable/DataSet: ADO.NETを使用してデータベース統合します。

メールマージのテンプレートの準備

メールマージテンプレートは、実行中に指定されたデータソースからデータで埋められるマージフィールドを含む文書です。テンプレートはDOCまたはDOCX形式であり、特定のテンプレートスタイルは必要ありません。次の手順に従って、メールマージテンプレートを作成します。

  1. MS Wordで文書を開くか、新しい文書を作成します。
  2. マージフィールドを挿入したい場所にカーソルを置きます。
  3. 挿入メニューからフィールドオプションを選択します。
  4. フィールド名のリストからMergeFieldを選択します。
  5. フィールド名ボックスにマージフィールドの名前を指定し、OKをクリックします。
  6. 文書を保存します。

以下のスクリーンショットは、サンプルテンプレート文書を示しています。

メールマージテンプレート

.NETメールマージAPI - インストール

Aspose.Words for .NETは、さまざまな方法でインストールできます。

C#を使用してWord文書でメールマージを実行する

テンプレートが準備できたら、メールマージを実行して文書を生成します。準備したテンプレートでメールマージを実行する手順は次のとおりです。

  1. Documentクラスを使用してテンプレート文書をロードします。
  2. Document.MailMerge.TrimWhitespacesなどの必要なメールマージオプションを設定します。
  3. データソースをパラメーターとして渡し、Document.MailMerge.Execute()メソッドを使用してメールマージを実行します。
  4. Document.Save(String)メソッドを使用して生成された文書を保存します。

以下のコードサンプルは、値の配列を使用したC#によるレポート生成の自動化を示しています。


メールマージ後のWord文書

C#でのメールマージの実行

C#を使用したXMLデータソースでのメールマージの実行

XMLファイルは、データを保存および転送するために一般的に使用されます。Aspose.Words for .NETも、メールマージ操作のデータソースとしてXMLをサポートしています。XMLをDataSetオブジェクトに読み込み、メールマージを実行します。以下は、我々の使用ケースに適したサンプルXMLファイルです。

<customers>
    <customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
    <customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
    <customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
    <customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>

以下のコードサンプルは、XMLデータソースからデータを取得し、C#を使用してメールマージを実行します。

以下は、XMLファイルからデータを埋め込むためのメールマージテンプレートです。

XML用のメールマージテンプレート

この画像は、メールマージを実行した後に作成されるWord文書の最初のページを示しています。

C#でXMLを使用したメールマージの実行

マージフィールドのカスタムフォーマット

Aspose.Words for .NETは、メールマージプロセスに対する強化された制御を提供します。MailMerge.FieldMergingCallbackプロパティを使用すると、各マージフィールドが遭遇する際にメールマージの動作を構成できます。IFieldMergingCallback.FieldMergingおよびIFieldMergingCallback.ImageFieldMergingメソッドを実装することで、メールマージ操作をカスタマイズできます。

以下は、提供されたサンプルテンプレートを通じてメールマージ時にカスタムフォーマットを適用する方法を示すコードサンプルです。

以下にHandleMergeFieldAlternatingRowsクラスの実装があります。

C#を使用した領域を用いたメールマージ

特定の領域をWord文書内に埋め込んで繰り返す必要がある場合、メールマージを領域を利用して行います。領域を作成するには、領域の開始と終了の両方を指定します。メールマージがデータソース内の各レコードに対してこの領域を繰り返します。以下のテンプレート例には、マージフィールド«TableStart:Orders»、«TableEnd:Orders»、«TableStart:OrderDetails»、および«TableEnd:OrderDetails»を利用した2つの領域—OrdersとOrderDetails—が含まれています。

領域を用いたメールマージ

以下は、前述のテンプレートに基づいて領域に基づいてメールマージを実行するコードサンプルです。

以下は、データベースからデータを読み取る方法を示します。

ネストしたメールマージ領域

ソースからのデータは、関係型フォーマットで構造化されている場合がよくあります。たとえば、「Orders」は「OrderDetails」と1対多の関係を持ち、注文内のアイテムの記録を保持します。そのようなシナリオではネストしたメールマージを利用します。以下は、このシナリオに適したサンプル請求書テンプレートです。

領域を用いたメールマージテンプレート

以下は、ネストしたメールマージの例のためのXMLデータソースです。

<?xml version="1.0" encoding="utf-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="OrdersSchema.xsd">
    <Order>
        <Number>23</Number>
        <Address>Nelson Street</Address>
        <Suburb>Howick</Suburb>
        <City>Auckland</City>
        <Phonenumber>543 1234</Phonenumber>
        <Date>03/01/2010</Date>
        <Total>14.00</Total>
        <Item>
            <Name>BBQ Chicken Pizza</Name>
            <Price>6.00</Price>
            <Quantity>1</Quantity>
            <ItemTotal>6.00</ItemTotal>
        </Item>
        <Item>
            <Name>1.5 Litre Coke</Name>
            <Price>4.00</Price>
            <Quantity>2</Quantity>
            <ItemTotal>8.00</ItemTotal>
        </Item>
    </Order>
    <Order>
        <Number>10</Number>
        <Address>Parkville Avenue</Address>
        <Suburb>Pakuranga</Suburb>
        <City>Auckland</City>
        <Phonenumber>548 7342</Phonenumber>
        <Date>05/03/2010</Date>
        <Total>6.00</Total>
        <Item>
            <Name>Hawaiian Pizza</Name>
            <Price>4.00</Price>
            <Quantity>1</Quantity>
            <ItemTotal>4.00</ItemTotal>
        </Item>
        <Item>
            <Name>Fries</Name>
            <Price>1.00</Price>
            <Quantity>2</Quantity>
            <ItemTotal>2.00</ItemTotal>
        </Item>
    </Order>
</Orders>

このXMLに対するOrderSchema.xsdファイルは以下の通りです。

<?xml version="1.0" encoding ="utf-8"?>
<xs:schema id="OrdersSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Orders">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Order">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Number"/>
                            <xs:element name="Address"/>
                            <xs:element name="Suburb"/>
                            <xs:element name="City"/>
                            <xs:element name="Phonenumber"/>
                            <xs:element name="Date"/>
                            <xs:element name="Total"/>
                            <xs:element name="Item">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Name"/>
                                        <xs:element name="Price"/>
                                        <xs:element name="Quantity"/>
                                        <xs:element name="ItemTotal"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

以下のコードサンプルは、C#を使用してネストしたメールマージを実行します。

メールマージ後のWord文書

以下は、ネストしたメールマージを実行した後に生成されるWord文書の最初のページです。

メールマージ後のWord文書

結論

Aspose.Words for .NETは、.NETアプリケーションに適した標準および拡張機能を提供する包括的なメールマージAPIです。数行のコードで、さまざまなデータソースからシンプルまたは複雑なレポートをシームレスに開発できます。.NET自動レポート生成のベストプラクティスのガイダンスについては、ドキュメントを参照してください。Aspose.Words for .NETを始めるには、開発者ガイドGitHubのサンプルコードを確認してください。Asposeプラグインも、レポート生成のための高度な機能を提供しています。

Aspose.Words for .NETを無料で試す

制限なしにAspose.Words for .NETを試すための無料の一時ライセンスを取得できます。今すぐ一時ライセンスを取得

関連情報