C# Word / DataTable to Table

C# 2019. 12. 4. 12:35 Posted by Vispera

Winform UI에 있는 DataTable을 워드로 옮기고 싶다.

구글링해도 안나온다. 다 커스텀된 코드들 밖에 없다.

현재 C# 기존 코드들로만 이용해서 만들고 싶다.

 

1. 먼저 DataTable에 데이터를 추가한다.

 

2. 테이블이 여러 개일 수 있으니까

List<DataTable> itemTables = new List<DataTable>();

로 가져온다.

 

3. 테이블마다 표를 만들어서 워드에 작성한다.

반복문이 필요하다!

i가 0이상일 때라는 말은 표가 2개 이상이라는 뜻이니까

표마다 빈칸을 넣어줘야 깔끔하다. (겹치지 않게 하고 싶다.)

그리고 표를 초기화해준다.

만약에 테이블 변수를 매번 저렇게 초기화 안하고 for 문 밖에 한 번만 선언하게 되면

Word 변수는 하나의 테이블로 인식해서 중첩되어 만들어져서 보기싫게 만들어진다.

따로 표를 만들려면 저런 방법으로 선언하면 된다.

직접 코드 짜면서 시행착오를 경험해보는게 중요하다.

 

이제 각 테이블에 들어 있는 문자열들을 표에 넣을 차례이다.

이전 글들을 참고해보면 알겠지만 필자가 찾은 워드 문서의 최적의 가로 길이는 450이다.

(레이아웃 > 여백 > 기본 기준)

 

cc는 column 갯수

rc는 row 갯수

 

셀의 가로 길이는 450을 컬럼 갯수로 나눠야 똑같은 길이의 셀이 예쁘게 생성된다.

나누기로 인해 약간의 오차가 있지만 봐줄만 하다.

 

for 문에서 동작하는 반복자들은 따로 설명하지 않을테니

직접 종이에 써가면서 왜 저렇게 동작하는지 파악해서 사용하길 바란다.

(그렇게 안하면 테이블 구조를 모르고 데이터를 넣게 된다.)

 

마지막에 개행 함수를 주석 처리했는데

자꾸 첫번째 테이블의 (1, 1) 셀 문자열 맨 앞에 개행이 추가되서 조치한 것이다.

 

마지막으로 빈칸 넣어주는 센스