소소한 C# 지식

[C#/WINFORM] C#에서 Word 문서 만들기 및 수정하기

해뤼맘 2022. 4. 13. 15:30
728x90
반응형

워드 문서를 사용하다 보면 간혹

제목만 변경하고 내용은 그대로 쓰고 싶다던지,

제목은 동일하고 내용만 변경하고 싶을 때가 있습니다.

문서를 정형화 하여 자동화시키고 싶을 때 C# WINFORM에서 

워드 문서를 생성 하고 수정할 수 있는 예제를 보여드리겠습니다.

 

1. Nuget 패키지에서 Aspose.Words 설치

  • 프로젝트 - Nuget 패키지 관리 - Aspose.Words 설치

c#, Nuget Pakage, Aspose.Words
Nuget패키지-Aspose.Words 설치

 

2. 워드 문서 생성 및 수정 Winform 생성

  • 워드 문서 만들기 : 제목/부제목 텍스트 입력란을 만들고, 워드 문서 만들기 버튼을 생성한다.
  • 워드 문서 수정 : 부제목만 변경할 수 있도록 텍스트 입력란을 만들고 문서 수정하기 버튼을 생성한다.

Word Create Winform 화면
Word 문서 생성 Winform 화면

3. 워드 문서 생성 및 테이블 만들기

  • 워드 문서 만들기 버튼 클릭(Click) 이벤트 추가
  • using Aspose.Words, using Aspose.Words.Tables 추가
  • 추가하는 새로운 row 마다 font 설정 필요(font 설정 별도로 하지 않을 경우 이전 font 유지)
 public void button1_Click(object sender, EventArgs e)
 {
 			Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            // 첫줄 font 설정
            Aspose.Words.Font font = builder.Font;
            font.Size = 26;
            font.Bold = true;
            font.Color = System.Drawing.Color.Black;
            font.Name = "굴림체";

            // 첫줄 텍스트 입력
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            //제목 텍스트 박스(title.Text)
            builder.Writeln(title.Text);


            //두번째줄 font 설정
            font.Underline = Underline.None;
            font.Size = 20;
            font.Color = System.Drawing.Color.Black;
            //두번째줄 텍스트 입력
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            //부제목 텍스트 박스(title2.Text)
            builder.Writeln(title2.Text);
            builder.Writeln();
            builder.Writeln();

            builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            font.Size = 15;
            font.Color = System.Drawing.Color.Red;
            builder.Writeln("table 생성");

            // 테이블 그리기
            Table table = builder.StartTable();
            
            // Insert a cell
            builder.InsertCell();
            // Use fixed column widths.
            table.AutoFit(AutoFitBehavior.AutoFitToContents);
            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
            font.Color = System.Drawing.Color.Black;
            builder.Write("구   분");
            // Insert a cell
            builder.InsertCell();
            font.Size = 20;
            builder.Write("일   자");
            builder.InsertCell();
            font.Size = 20;
            builder.Write("내   용");
            builder.EndRow();
            builder.InsertCell();
            font.Size = 10;
            builder.Write("구분 내용");
            builder.InsertCell();
            font.Size = 10;
            builder.Write("일자 내용");
            builder.InsertCell();
            font.Size = 10;
            builder.Write("내용 내용");
            builder.EndRow();
            builder.EndTable();
            builder.Writeln();

            // 파일 저장
            doc.Save("Document.docx");
}

4. 워드 문서 만들기 결과

  • 아래와 같이 제목/부제목을 입력하고 "워드 문서 만들기" 버튼 클릭
  • Document 문서가 만들어지면서 입력한 데이터로 아래와 같이 생성되는 것을 볼 수 있습니다.

c# winform word 문서 생성 결과

5. 생성된 워드 문서 수정하기

  • 문서 수정하기 버튼 이벤트 추가
  • 부제목만 변경할 수 있도록 아래와 같이 코딩
 private void button2_Click(object sender, EventArgs e)
        {
            Document doc = new Document("Document.docx");
            DocumentBuilder builder = new DocumentBuilder(doc);
           
            var paragraph = doc.Sections[0].Body.Paragraphs[2].Runs[0];
            //부제목 텍스트(title2_update.Text)
            paragraph.Text = title2_update.Text;
            // 문서 저장(update 문서를 별도로 저장하여도 되고 기존 문서랑 동일하게 하여도 가능)
            doc.Save("Document_update.docx");
        }

6. 워드 문서 수정하기 결과

  • 아래와 같이 부제목을 입력하고 "문서 수정하기" 버튼 클릭
  • Document_update 문서가 만들어지면서 입력한 데이터로 아래와 같이 수정되는 것을 볼 수 있습니다.

Word 문서 수정하기
word 문서 수정하기 결과

 

 

이상 c# winform으로 word 문서 생성할 수 있는 예제였습니다.

많은 도움이 되셨으면 좋겠습니다.

728x90
반응형