Word 문서의 자동화된 생성은 기업에서 수많은 보고서를 생성하는 데 널리 사용됩니다. 어떤 경우에는 문서가 처음부터 작성됩니다. 반면에 미리 정의된 템플릿은 자리 표시자를 채워 Word 문서를 생성하는 데 사용됩니다. 이 기사에서는 C#에서 템플릿에서 동적으로 프로그래밍 방식으로 Word 문서를 생성하는 방법을 보여줍니다. 다양한 유형의 데이터 원본에서 Word 템플릿을 채우는 방법을 알게 될 것입니다.
이 문서에서는 코드 샘플과 함께 다음 시나리오를 다룹니다.
- C# 워드 자동화 API
- C# 개체의 값을 사용하여 템플릿에서 Word 문서 생성
- XML 데이터 소스를 사용하여 Word 문서 생성
- JSON 데이터 소스를 사용하여 Word 문서 만들기
- CSV 데이터 소스를 사용하여 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에 대해 자세히 알아볼 수 있습니다. 또한 포럼을 통해 문의하실 수 있습니다.