差し込み印刷
メール マージ
このガイドでは、Aspose.Words FOSS for .NET におけるメールマージ フィールドコードとメールマージ 設定データの扱い方、およびマージ実行との境界がどこにあるかを示します。Aspose.Words FOSS for .NET は Word のメールマージ フィールドコードを認識し、更新します — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF、および SKIPIF — そのフィールド評価エンジンの一部として、メールマージ 設定データを読み取ることができ (MailMergeSettings) はドキュメント内に永続化されます。外部データソースに対して実際のマージを実行し、入力済みの出力ドキュメントを生成する — MailMerge.Execute() 商用製品でおなじみのワークフロー — は not 本エディションで実装されています;ただし MailMerge 現在の API サーフェスには実行クラスが存在しません。
MERGEFIELD — マージ プレースホルダーの読み取りと変更
FieldMergeField は MERGEFIELD フィールドを実装します。FieldName と FieldNameNoPrefix はフィールドがバインドされている基礎データソースの列名を返し、TextBefore/TextAfter はマージされた値の前後に付加されるリテラルテキストを保持し、IsMapped/IsVerticalFormatting はマージフィールドのマッピングとレイアウトフラグを報告します。すべてのフィールドタイプと同様に、GetFieldCode()、Update()、Unlink()、Remove() をサポートします。
ADDRESSBLOCK と GREETINGLINE
FieldAddressBlock は ADDRESSBLOCK フィールドを実装し、FormatAddressOnCountryOrRegion、IncludeCountryOrRegionName、ExcludedCountryOrRegionName、NameAndAddressFormat、LanguageId が受取人の住所の書式設定方法を制御します。FieldGreetingLine は GREETINGLINE を実装し、AlternateText、NameFormat、LanguageId が挨拶文のテキストを制御します。
DATABASE フィールド
FieldDatabase は DATABASE フィールドを実装し、フィールドに永続化された接続詳細(Connection、FileName、Query、TableFormat、InsertHeadings、InsertOnceOnMailMerge、FirstRecord、および LastRecord)を公開します。このフィールドが更新されたときにクエリ結果を提供するには、IFieldDatabaseProvider とその GetQueryResult(fileName, connection, query, field) メソッドを実装し、Update() を呼び出す前にそれを Document.FieldOptions.FieldDatabaseProvider に割り当てます。Connection プロパティは必ず設定する必要があります――設定しないと、Update() はクエリするデータソースを持ちません。
条件付きマージ フィールド — NEXTIF と SKIPIF
FieldNextIf と FieldSkipIf は NEXTIF および SKIPIF フィールドを実装し、条件テストのために LeftExpression、ComparisonOperator、RightExpression をそれぞれ公開します。Document.FieldOptions.ComparisonExpressionEvaluator(IComparisonExpressionEvaluator)は、これらの条件式の評価方法を上書きできる場合があります。
画像マージ フィールドのサイズ設定
MergeFieldImageDimension は、画像マージ フィールドを介して挿入される画像の幅または高さを表し、new MergeFieldImageDimension(value)(ポイント単位)または明示的な MergeFieldImageDimensionUnit(Point または Percent)を伴う new MergeFieldImageDimension(value, unit) として構成されます。その Value と Unit プロパティは両方とも書き込み可能です。
スコープに含まれるものと含まれないもの
Document.MailMergeSettings を返します MailMergeSettings メールマージ構成をモデル化するオブジェクト OOXML はドキュメント内に永続化されます — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, および Office Data Source Object (ODSO) 設定を介して OdsoFieldMapData/OdsoRecipientData コレクションです。これは構成 data ドキュメントが保持しているものであり、ライブ接続ではありません:読み取りおよび書き込み MailMergeSettings データベース、スプレッドシート、またはアドレスリストに接続せず、このエディションには MailMerge 実行クラスがなく、マージを実行して生成された出力ドキュメントを作成できません。このエディションがサポートしているのは、上記のフィールドレベルの層であり、フィールド評価エンジンを通じて単一のドキュメント内でマージ フィールドコード自体を認識、読み取り、更新、変更することです。
ヒントとベストプラクティス
- このエディションでは、
MailMergeSettingsを外部データに接続するための API としてではなく、読み取りとラウンドトリップが可能なドキュメントメタデータとして扱ってください — 背後に実行エンジンはありません。 - 必ず
FieldDatabase.Connectionを設定してからDATABASEフィールド上でUpdate()を呼び出してください。さもなければ、更新にクエリする対象がありません。 - 一度だけ
IFieldDatabaseProviderを実装し、Document.FieldOptions.FieldDatabaseProviderを通じて割り当てることで、ドキュメント内のすべてのDATABASEフィールドがデータを解決する方法を一元化します。 - プログラムで処理方法を決定する前に、
FieldMergeField.FieldNameを使用してMERGEFIELDがバインドされているデータソースの列を読み取ります。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
FieldDatabase.Update() はデータを返しません | Connection が設定されていないか、IFieldDatabaseProvider が登録されていません | 更新する前に Connection を設定し、Document.FieldOptions.FieldDatabaseProvider を割り当ててください |
MailMerge.Execute() スタイルの API が期待されます | 外部データソースに対するマージ実行は、この FOSS エディションでは実装されていません | 単一ドキュメント内でマージフィールドクラス(FieldMergeField、FieldDatabase など)を直接操作するか、フルマージ実行のために .NET 用の商用 Aspose.Words を使用してください |
NEXTIF/SKIPIF 条件が予期せず評価されます | デフォルトの比較式評価が期待されるセマンティクスと一致しません | IComparisonExpressionEvaluator を実装し、Document.FieldOptions.ComparisonExpressionEvaluator に割り当てます |
FAQ
このエディションで CSV またはデータベースに対してメールマージを実行できますか?
いいえ。このエディションはメールマージのフィールドコードと MailMergeSettings 設定データモデルを実装していますが、外部データソースに接続して文書を生成するための MailMerge 実行クラスはありません。
それでは、MERGEFIELD フィールドで実際に何ができるのでしょうか?
現在のドキュメント内で直接読み取り・変更できます — バインドされた列名には FieldMergeField.FieldName、周囲のリテラルテキストには TextBefore/TextAfter、他のフィールドと同様に Update()/Unlink()/Remove() を使用して —。
マージ実行がなくても MailMergeSettings は無意味ですか?
いいえ — このエディションではマージを実行するためにその構成を使用しませんが、DataSource、Query、または MainDocumentType など、ドキュメントに保存されたメールマージ設定を読み取ったり往復させたりするのに依然として有用です。
DATABASE フィールドにデータを供給するにはどうすればよいですか?
IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) を実装し、その実装を Document.FieldOptions.FieldDatabaseProvider に割り当ててから Update() を呼び出します。
画像マージフィールドで挿入された画像のサイズを制御するにはどうすればよいですか?
MergeFieldImageDimension を使用します。ポイント値または明示的な MergeFieldImageDimensionUnit(Point または Percent)を加えた値で構築します。
API Reference 概要
| クラス / メソッド | 説明 |
|---|---|
FieldMergeField | MERGEFIELD フィールド: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped |
FieldAddressBlock | ADDRESSBLOCK フィールド: アドレス書式設定プロパティ |
FieldGreetingLine | GREETINGLINE フィールド: 敬称の書式設定プロパティ |
FieldDatabase | DATABASE フィールド: Connection, Query, FileName, TableFormat |
IFieldDatabaseProvider | DATABASE フィールドのクエリ結果を GetQueryResult() 経由で提供します |
FieldNextIf / FieldSkipIf | NEXTIF / SKIPIF 条件付きマージフィールド |
MergeFieldImageDimension | 画像マージフィールド画像の幅/高さ |
Document.MailMergeSettings | 永続化されたメールマージ構成データ(ライブ データ接続ではありません) |