728x90
win32com
은 Microsoft Windows OS가 제공하는 API이다. 이를 사용해 MS word, Power Point, Excel, Outlook 등 microsoft office의 제품들 다룰 수 있다. excel, ppt 파일을 더 쉽게 다룰 수 있도록 만들어진 여러 라이브러리들이 있지만, 환경에 따라 사용할 수 없는 라이브러리들이 있는 것 같다. python-pptx
를 이용해 사내에서 업무 자동화 프로그램을 개발하려고 했으나 저장되어있는 pptx 파일을 불러오지 못하는 오류가 있어 win32com
를 사용하게 되었다.
PPT에 있는 데이터에 접근하기
지금까지 필요한 기능들은 pptx 파일에 저장된 데이터를 읽어 활용하는 것이라 원하는 데이터를 어떻게 받아올 수 있을지에 대한 고민을 정리한다. excel은 table 형태로 정형화 되어 있기 때문에 행과 열의 정보로 원하는 데이터에 접근할 수 있지만 ppt는 데이터를 슬라이드 영역 내에 자유롭게 배치할 수 있고 text box, table, 이미지, 도형 등 여러 가지 객체가 존재한다. 이 때문에 원하는 데이터에 접근하는 것 부터 어려움이 있었다.
PPT 파일의 구조
- pptx 파일은 하나의
presentation
안에 여러 개의 slide를 가지고 있다. 그리고 각 slide에 존재하는 text box, 이미지, table 등의 객체는 shape이라고 부른다.
- pptx 파일에서 어떤 작업을 수행하고자 할 때는 1) pptx 파일 열기 2) target slide에 접근 3) target shape에 접근 순으로 진행한다.
- 이 때, 1) 원하는 파일에 접근은 파일명으로 접근할 수 있고, 2) target slide는 slide 번호로 접근할 수 있지만 3) target shape에 접근하는 것이 문제이다. 각각의 shape마다 데이터에 접근하는 과정이 다르기 때문에 target shape의 종류를 아는 것까지 필요하다.
예제 코드
- slide 마다 무질서하게 존재하는 것 처럼 보이는 shape이지만, 생성될 때 일정한 규칙에 의해 정의되는
Name
attribute를 가지고 있다. - Name은 shape의 종류 + 생성된 순서로 구성되어 python 스크립트에서 접근한 shape의 종류를 확인할 수 있다. 만약 동일한 template를 만들어 활용한다면 template 내의 각 shape에 접근할 수 있는 이름을 부여해 쉽게 접근할 수 있도록 할 수 있다.
- 아래 예시는 pptx 파일을 열어 프리젠테이션 내에 존재하는 모든 shape의 정보를 출력하는 예시이다.
'프로그래밍 언어 > python' 카테고리의 다른 글
[python의 쓸모] 5가지 유명한 Application: Web 개발부터 AI까지 (0) | 2023.02.27 |
---|---|
[win32com] python으로 pptx 파일 다루기(2) - PPT 요소에 있는 데이터 접근하기 (0) | 2022.10.23 |
[xlwings] 파이썬으로 excel 파일 다루기 (2) 여러 개의 파일과 시트 다루기 (0) | 2022.10.04 |
[xlwings] 파이썬으로 excel 파일 다루기 (1) quick start (0) | 2022.09.28 |
[python] 객체 지향 프로그래밍 1 - Object oriented python (0) | 2022.08.08 |