C#의 템플릿에서 Word 생성

Word 문서의 자동화된 생성은 기업에서 수많은 보고서를 생성하는 데 널리 사용됩니다. 어떤 경우에는 문서가 처음부터 작성됩니다. 반면에 미리 정의된 템플릿은 자리 표시자를 채워 Word 문서를 생성하는 데 사용됩니다. 이 기사에서는 C#에서 템플릿에서 동적으로 프로그래밍 방식으로 Word 문서를 생성하는 방법을 보여줍니다. 다양한 유형의 데이터 원본에서 Word 템플릿을 채우는 방법을 알게 될 것입니다.

이 문서에서는 코드 샘플과 함께 다음 시나리오를 다룹니다.

C# 워드 자동화 API

Aspose.Words for .NET을 사용합니다. Word 문서를 처음부터 생성하거나 미리 정의된 Word 템플릿을 채워서 생성할 수 있는 Word 자동화 API입니다. API의 바이너리를 다운로드하거나 다음 방법 중 하나를 사용하여 설치할 수 있습니다.

NuGet 패키지 관리자 사용

패키지 관리자 콘솔 사용

PM> Install-Package Aspose.Words

C# 개체를 사용하여 템플릿에서 Word 문서 생성

먼저 C# 개체를 사용하여 Word 템플릿을 채우는 방법을 살펴보겠습니다. 이를 위해 문서 내용으로 다음 자리 표시자를 사용하여 Word 문서(DOC/DOCX)를 만듭니다.

<<[sender.Name]>> says: "<<[sender.Message]>>."

여기에서 sender는 템플릿을 채우는 데 사용할 다음 클래스의 개체입니다.

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 문서를 생성하기 위해 JSON 데이터 소스를 로드하고 사용하기 위해 JsonDataSource 클래스를 사용하고 나머지 단계는 동일하게 유지됩니다. 다음 코드 샘플은 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 데이터를 로드한다는 한 가지 변경 사항을 제외하고 여기에서도 동일하게 유지됩니다. 다음 코드 샘플은 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");

산출

무료로 .NET용 Aspose.Words 사용해 보기

무료 임시 라이선스를 사용하여 .NET용 Aspose.Words를 사용해 볼 수 있습니다.

결론

이 기사에서는 C#을 사용하여 템플릿에서 Word 문서를 생성하는 방법을 배웠습니다. 또한 개체, XML, JSON 및 CSV 데이터 소스를 사용하여 Word 문서를 생성하는 방법을 살펴보았습니다. 문서를 사용하여 C# Word 자동화 API에 대해 자세히 알아볼 수 있습니다. 또한 포럼을 통해 문의하실 수 있습니다.

또한보십시오