ERPシステムの実践が示しているように、企業アプリケーションはレポートの30%で構成されています。 このようなアプリケーションの一般的な状況は、一部のデータに関するレポートを作成することです。
レポートを作成するには、
ReportBuilderまたは
その他のレポート
システムを使用できます。 この記事では、Aspose.Wordsを使用して
MS Word 2003 (およびそれ以降)でレポートを構築することを検討します。編集が簡単で、開発が便利で、レポートシステムの巨人などと連携するための特別なスキルが必要ないためです。
同じデータセットを使用して、一連の
キーフィールドを持つ通常のWord 2003ドキュメントであるレポートテンプレートを作成する必要があり
ます 。
次に、テンプレートを好きなようにカスタマイズできます。つまり、最終バージョンで表示するフォームにテンプレートを持ち込むことができます。 つまり、選択したデータセットの印刷可能なテンプレートを作成します。
このソリューションの利点は、印刷フォーム自体を開発する人がSQLまたはデータソースの知識を持っていない可能性があることです。 彼はMS Office Wordでのみ作業できるはずです。 すべてが
シンプルであるように思われますが、このケースでは次のように想定されています。
- レポートテンプレートとレポート自体の作成は、MS Officeがインストールされていないコンピューターで発生する可能性があります。 これにより、COMを使用する機能が遮断されます。
- レポートテンプレートはdocxではなくdoc形式であり、 非常に便利です。
問題の声明
- 製品が回転しているサーバー上-Wordなどの製品はインストールしないでください
- 95ではなくWord 2003である必要があります
- 問題に対する便利で最も重要な迅速な解決策
- レポートテンプレートは、エンドビジネスユーザーが作成できるほど単純でなければなりません。
したがって、タスクは明確です。続行します。
印刷フォームの主な要素は、通常のデータフィールドとデータテーブルです。 便宜上、テンプレート内の一連のフィールドの作成と別のメソッドでのテーブルの作成を分けます。
行に注意してください
docBuilder.InsertField(string.Format("MERGEFIELD TableStart:{0}", tableSysName), "{");
ここでは、外部シンボル「{」が付いたキーフィールド
TableStartがテーブルに追加されます。このシンボルは基本的なものではなく、外部でフォーム上のスペースをほとんど占有しません。 また、最後に文字「}」を
含むTableEndが追加されます。 これらのフィールドは、テーブルの同じ行にある必要があります。 それらに囲まれたフィールドは現在のテーブルを参照し、データセットに対して繰り返されます。 つまり、データを複数の行に配置する必要がある場合、エラーが発生します。
ただし、トリックがあります。最初の列に開始文字、最後の列に終了文字、3つの列の表を追加し、中央のセルに別の表を挿入します。 挿入されたテーブルは、各データセットに対して繰り返されます。 デフォルトでは、これが追加されることはほとんどありません(少なくとも現在適用されている目的のため)。
テンプレートを作成するには、これら2つの方法で十分です。 さらに、このテンプレートは構成されています(フォント、レイアウトなど)-これにはあまり関心がありません。 マークアップを保持したまま、完成したテンプレートにデータを入力するだけです。 テーブルにないフィールドに入力するには、すべてが簡単です:
次に、テーブルに記入します。 Asposeでは、すぐにわかるように、この問題に非常に徹底的に取り組んできました。
ここではすべてが非常に単純ですが、見てみましょう。
それだけです、必要最小限のものがあります。 マークアップの変更は発生せず、空のフィールド(データがないフィールド)は、印刷された形式では単純に消えます。 フィールドに値を入力する場合、
objectを渡す必要があり
ますが、ここでは
文字列がどこでも渡されます。 原則として、任意のデータ型を転送し、
IFieldMergingCallbackを実装した後、データを処理およびフォーマットできます。
doc.MailMerge.FieldMergingCallbackハンドラーインスタンスを割り当てることで、ハンドラーを
台無しにすることができます。 つまり、必要な数のハンドラを潜在的に作成できます
すべての機会とすべてのデータセット。
doc.MailMerge.ExecuteWithRegions()の呼び出しでハンドラーの割り当てを変更すると、より柔軟な処理が得られます。
可能な質問
- これは広告ですか? いいえ、これは広告ではありません。結果を共有することにしました
- Aspose.Wordsを正確に使用する理由 それはとても起こりました。 要件の下で最も最適になりました。
- これは有効なオプションですか? いいえ、これは簡易版です。 特別版と言うこともできますが、実際はすべてが少し複雑です。
- コードに関するコメントはどこにありますか? コード内のコメントは非常に包括的なことがわかりました。
ここにソースがあります