반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 


 

오늘은 지난 시간에 배웠던 Pywin32 패키지의 win32com 모듈을 이용해서 word 파일을 다루어 보겠습니다.

 

참고로 오늘의 내용을 함께 따라하시기 위해서는 Pywin32 패키지가 설치되어 있어야 합니다.

 

 

 

1. 새로운 워드 파일 열기 

# 관련 패키지 import
import win32com.client

# Word 어플리케이션 열기
word = win32com.client.gencache.EnsureDispatch("Word.application")

# 자동으로 실행되는 것을 확인하고 싶을 때 코드 추가
word.Visible = True

 # 새로운 워드 문서 열기
doc = word.Documents.Add()

 

만약 새로운 문서가 아닌 기존의 문서를 다루고 싶으시면, 아래의 코드를 실행해주세요.

 

# 절대 경로를 이용하여 기존 워드 파일 열기
doc = word.Documents.Open(r'C:\Users\SANGWOO\Desktop\VSCODE\test.docx')

 

 

2. 문자 입력

 

# 커서 앞에 문자 삽입
word.Selection.InsertBefore("안녕하세요 ")

# 커서 뒤에 문자 삽입
word.Selection.InsertAfter("코딩유치원입니다.")

 

 

3. 커서 이동

 

커서를 이동하는 방법은 아래와 같이 왼쪽, 혹은 오른쪽으로 가능하며 다양한 단위로 이동 가능합니다.

(아직 상하 이동은 파악하지 못하여서, 추후에 알게되면 업데이트 하겠습니다.)

 

# 왼쪽으로 커서 이동
Selection.MoveLeft(Unit=문자/단어/문장/표의 셀 하나,Count=숫자)

# 오른쪽으로 커서 이동
Selection.MoveRight(Unit=문자/단어/문장/표의 셀 하나,Count=숫자)

 

자세한 예시는 아래와 같습니다. 하나씩 따라하시면서 어떻게 움직이는지 관찰해보세요.

 

# 글자 단위로 이동
word.Selection.MoveLeft(Unit=win32.constants.wdCharacter, Count=3)

# 단어 하나씩 이동 (특수기호는 단어 하나로 취급함 ex. ?, !, 쉼표 등등)
word.Selection.MoveLeft(Unit=win32.constants.wdWord, Count=1)

# 문장 하나를 이동 (문장은 .으로 구분함)
word.Selection.MoveRight(Unit=win32.constants.wdSentence, Count=1)

# 표에서 한 칸 이동 (표가 없으면 에러)
word.Selection.MoveLeft(Unit=win32.constants.wdCell, Count=1)

 

 

4. 글자 스타일 변경

 

스타일을 변경하는 방법은 아직 완전히 파악하지 못하여서, 글자의 크기 변경하는 법만 일단 알려드릴게요.

 

# 한번에 모든 글자를 변경하고 싶을 때
doc.Content.Font.Size = 20

# 커서의 위치를 기준으로 몇 개의 글자만 변경하고 싶을 때

word.Selection.Start = 2 # 커서가 있는 행에서 2번째 글자의 다음 글자부터
word.Selection.End = 4 # 커서가 있는 행에서 4번째 글자까지
word.Selection.Font.Size = 20 # 선택된 부분의 폰트 크기를 20으로 조정

 

 

5. 페이지 가로/세로 설정

 

페이지를 세로로 사용할지, 가로로 사용할지를 설정해 줄 수도 있습니다.

 

# 페이지 방향 세로
doc.PageSetup.Orientation = 0

# 페이지 방향 가로
doc.PageSetup.Orientation = 1

 

 

6. 페이지 상하좌우 여백 설정

# 페이지 상하좌우 여백 설정 

doc.PageSetup.TopMargin = 100
doc.PageSetup.BottomMargin = 100
doc.PageSetup.LeftMargin = 100
doc.PageSetup.RightMargin = 100

 

7. 문서 저장

 

파일을 닫기 전에 문서를 저장해주어야 합니다. 저장해주지 않으면 아래에서 문서를 닫거나 어플리케이션을 닫는 단계에서 저장 경로를 설정하는 창이 뜨게 됩니다.

 

# 내PC - 문서에 저장
# doc.SaveAs("test.docx")

# 지정된 절대 경로에 test라는 이름으로 워드 문서 저장
doc.SaveAs(r"C:\Users\SANGWOO\Desktop\VSCODE\test.docx")

 

8. 워드 문서 닫기 / 어플리케이션 닫기

 

문서를 닫는 것과 어플리케이션(워드 프로그램)을 닫는 것의 차이를 코드를 하나씩 실행하면서 관찰해 보세요.

 

# 워드 파일 닫기
doc.Close()

# 워드 프로그램 종료
word.Quit()

워드 문서만 닫은 상태

 

 

엑셀을 다룰 때 써보았던 win32com 모듈을 이용해서 Word 문서를 다루어 보려고 공부해보았으나, 자료가 부족하여서 원하는 기능을 모두 사용하기는 힘들어 보입니다.

 

그래서 다음 시간에는 python-docx 패키지를 이용해서 MS워드 문서를 다루는 방법을 공부해보겠습니다.

 

https://python-docx.readthedocs.io/en/latest/

 

python-docx — python-docx 0.8.11 documentation

from docx import Document from docx.shared import Inches document = Document() document.add_heading('Document Title', 0) p = document.add_paragraph('A plain paragraph having some ') p.add_run('bold').bold = True p.add_run(' and some ') p.add_run('italic.')

python-docx.readthedocs.io

 


<참고 자료>

 

1. 파이썬 win32com을 이용한 Word 자동화_네이버 블로그

https://m.blog.naver.com/anakt/221874907407

반응형

+ Recent posts