C# WinForm Word 문서 만들기 #1

C# 2019. 11. 25. 21:04 Posted by Vispera

1. using Word = Microsoft.Office.Interop.Word; 을 선언해준다.

선언해주기 위해서 아래와 같이 참조를 추가해준다.

 

 

 

 

2. 워드 파일 생성을 위한 버튼과 함수를 하나씩 생성해준다.

 

3. 객체 선언 및 사용할 변수 초기화

object end_of_doc = "\\endofdoc";
object path = @Application.StartupPath + "\\Modules\\Basic_template.docx";
object obj_miss = System.Reflection.Missing.Value;

Word.Application word = new Word.Application();
Word.Document word_doc = new Word.Document();

 

 

4. 속성 설정

word.Visible = false;
word.WindowState = Word.WdWindowState.wdWindowStateNormal;

 

 

5. 단락 만들기

워드에서 Paragraph라 함은, 글을 쓴다는 뜻이다.

제목을 만들 수도 있고,

한 문장의 글을 쓸 수도 있고,

띄어쓰기와 같은 문단 또는 맥락 나누기에도 사용할 수 있다.

위 코드는 apk 이름을 문서에 적기 위한 코드이다. 아래와 같은 결과가 나온다.

 

코드 설명)

1) Word.Application 클래스 함수인 Documents.Add는

4개의 매개변수를 가진다.

첫번째로 들어가는 매개변수는 특정 경로에 있는 사용자 지정 템플릿을 가져와서

Word.Document 클래스 객체가 문서를 쓸 때 베이스 템플릿으로 사용한다는 것이다.

뒤에 나오는 3개 매개변수는 Optional 하다. 기본적인 문서만 작성할꺼면 건들 필요없다.

NewTemplate, DocumentType, Visible이고

 

2번째 매개변수는 이 문서를 템플릿으로 작성할 것인지에 대한 여부이다.

default는 false이고, true로 설정하면 템플릿으로 작성된다.

 

3번째 매개변수는 문서 종류를 어떤걸 사용할지를 정하는 것이다.

wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset, wdNewWebPage

총 4개의 문서 종류를 선택할 수 있고, default는 wdNewBlankDocument이다.

 

4번째 매개변수는 문서 작성할 때 실제로 창을 보여주면서 작성할지를 정하는 것이다.

default는 true이고, false로 설정하면 문서창을 띄우지 않고 작성하게 된다.

 

2) Word.Paragraph

안드로이드를 개발해본 사람이라면 익숙하다.

텍스트 크기와 굵기, 내용, 정렬을 설정할 수 있다.

 

Range.InsertParagraphAfter()는 개행한다는 뜻이다.

중간에 설정과 상관없이 진행된다. 그래서 저렇게 의도적으로 안하고 정상적으로 하려면

모든 설정을 마치고 사용해야 한다. 의도치 않은 개행이 이루어지니까 조심해야 한다.

 

Format.SpaceAfter는 단락 이후의 여백 공간을 의미한다.

 

 

6. 표(테이블) 만들기

표는 워드 문서 작성에 있어서 아주 중요한 요소 중 하나이다.

기본적이지만 마우스로 만들었던 방식과는 달리 코드로 작성해야해서

구성 요소 하나 하나 생각해야 하는 까다로운 요소이다.

아래는 테이블을 구현하는 코드이다.

 

코드 분석)

1) Word.Table 객체 선언

 

2) Word.Range

워드에는 북마크라는 것이 존재한다.

특히 표를 작성할 때는 일정 범위를 지정해서 작성하게 한다.

위와 같이 작성하면 된다.

 

3) Tables.Add

Table이 아니라 Tables이다.

첫번째 매개변수는 Word.Range

두번째 매개변수는 행

세번째 매개변수는 열

 

4) Cell

배열이나 벡터처럼 인덱스가 0부터 시작하지 않는다.

1부터 시작하고 3번 코드에서 적은 행과 열의 숫자와 동일하게 끝난다.

 

 

그리고 마지막에 이렇게 개행을 하고

표 제목을 적을 수 있다.