Word文書の自動生成は、多数のレポートを作成するために企業で広く使用されています。場合によっては、ドキュメントは最初から作成されます。一方、事前定義されたテンプレートは、プレースホルダーにデータを入力してWord文書を生成するために使用されます。この記事では、C#でテンプレートから動的かつプログラム的にWord文書を生成する方法を示します。さまざまな種類のデータソースからWordテンプレートにデータを入力する方法を理解できるようになります。
この記事では、次のシナリオとコードサンプルについて説明します。
- C#Word Automation API
- C#オブジェクトの値を使用してテンプレートからWord文書を生成する
- XMLデータソースを使用してWord文書を生成する
- JSONデータソースを使用してWord文書を作成する
- CSVデータソースを使用してWord文書を生成する
C#Word Automation API
Aspose.Words for .NETを使用します-Word文書を最初から生成するか、事前定義されたWordテンプレートに入力することでWord文書を生成できるWord自動化APIです。 APIのバイナリをダウンロードするか、次のいずれかの方法でインストールできます。
NuGetパッケージマネージャーの使用
パッケージマネージャーコンソールの使用
PM> Install-Package Aspose.Words
C#オブジェクトを使用してテンプレートからWord文書を生成する
まず、C#オブジェクトを使用してWordテンプレートにデータを入力する方法を見てみましょう。このために、ドキュメントのコンテンツとして次のプレースホルダーを使用してWordドキュメント(DOC / DOCX)を作成します。
<<[sender.Name]>> says: "<<[sender.Message]>>."
ここで、送信者は、テンプレートにデータを入力するために使用する次のクラスのオブジェクトです。
public class Sender
{
public string Name { get; set; }
public string Message { get; set; }
public Sender (string _name, string _message)
{
Name = _name;
Message = _message;
}
}
次に、Aspose.Wordsのレポートエンジンを使用して、以下の手順に従って、テンプレートとSenderクラスのオブジェクトからWordドキュメントを生成します。
- Documentクラスのオブジェクトを作成し、Wordテンプレートのパスで初期化します。
- Senderクラスのオブジェクトを作成して初期化します。
- ReportingEngineクラスをインスタンス化します。
- ReportingEngine.BuildReport()を使用してテンプレートにデータを入力します。これは、ドキュメントのオブジェクト、データソース、およびデータソースの名前をパラメーターとして受け取ります。
- Document.Save()メソッドを使用して生成されたWord文書を保存します。
次のコードサンプルは、C#のテンプレートからWordドキュメントを生成する方法を示しています。
Document doc = new Document("template.docx");
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, sender, "sender");
doc.Save("word.docx");
出力
C#でXMLデータソースからWord文書を生成する
XMLデータソースからWord文書を生成するために、次のプレースホルダーを持つもう少し複雑なWordテンプレートを使用します。
<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Age)]>>
この例で使用したXMLデータソースを以下に示します。
<Persons>
<Person>
<Name>John Doe</Name>
<Age>30</Age>
<Birth>1989-04-01 4:00:00 pm</Birth>
</Person>
<Person>
<Name>Jane Doe</Name>
<Age>27</Age>
<Birth>1992-01-31 07:00:00 am</Birth>
</Person>
<Person>
<Name>John Smith</Name>
<Age>51</Age>
<Birth>1968-03-08 1:00:00 pm</Birth>
</Person>
</Persons>
XMLデータソースからWord文書を生成する手順は次のとおりです。
- Documentクラスのインスタンスを作成し、Wordテンプレートのパスで初期化します。
- XmlDataSourceクラスのインスタンスを作成し、XMLファイルのパスで初期化します。
- ReportingEngineクラスをインスタンス化します。
- 以前にWordテンプレートにデータを入力するために使用したのと同じ方法でReportingEngine.BuildReport()メソッドを使用します。
- Document.Save()メソッドを使用して、生成されたWord文書を保存します。
次のコードサンプルは、C#でXMLデータソースからWordドキュメントを生成する方法を示しています。
Document doc = new Document("template.docx");
XmlDataSource dataSource = new XmlDataSource("datasource.xml");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");
出力
C#でJSONデータソースからWord文書を生成する
次に、JSONデータソースを使用してWordドキュメントを生成する方法を見てみましょう。この例では、マネージャーによってグループ化されたクライアントのリストを生成します。この場合、Wordテンプレートは次のようになります。
<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>
以下は、テンプレートにデータを入力するために使用するJSONデータソースです。
[
{
Name: "John Smith",
Contract:
[
{
Client:
{
Name: "A Company"
},
Price: 1200000
},
{
Client:
{
Name: "B Ltd."
},
Price: 750000
},
{
Client:
{
Name: "C & D"
},
Price: 350000
}
]
},
{
Name: "Tony Anderson",
Contract:
[
{
Client:
{
Name: "E Corp."
},
Price: 650000
},
{
Client:
{
Name: "F & Partners"
},
Price: 550000
}
]
},
]
JSONからWord文書を生成するために、JsonDataSourceクラスを使用してJSONデータソースをロードおよび使用します。残りの手順は同じままです。次のコードサンプルは、C#でJSONを使用してテンプレートからWordドキュメントを生成する方法を示しています。
Document doc = new Document("template.docx");
JsonDataSource dataSource = new JsonDataSource("datasource.json");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "managers");
doc.Save("word.docx");
出力
C#でCSVデータソースからWord文書を生成する
CSVからWord文書を生成するには、次のWordテンプレートを使用します。
<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Column2)]>>
テンプレートには、次のCSVデータが入力されます。
John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm
それでは、C#コードについて見ていきましょう。ここでも、CsvDataSourceクラスを使用してCSVデータを読み込むという1つの変更を除いて、すべての手順は同じままです。次のコードサンプルは、CSVデータソースからWordドキュメントを生成する方法を示しています。
Document doc = new Document("template.docx");
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");
出力
Aspose.Words for .NETを無料でお試しください
無料の一時ライセンスを使用して、Aspose.Words for .NETを試すことができます。
結論
この記事では、C#を使用してテンプレートからWord文書を生成する方法を学習しました。さらに、オブジェクト、XML、JSON、CSVデータソースを使用してWord文書を生成する方法を見てきました。 ドキュメントを使用して、C#Word自動化APIの詳細を調べることができます。また、フォーラムからお問い合わせいただけます。