SlideShare a Scribd company logo
1 of 14
파이썬
피피티
초보
테란만
win32com을
이용한
PPT
활용
02win32com
불러오기
03기본적인 구조
win32com이란?
01
04몇 가지 예제
win32com이란?
01
COM(Component Object Model)이라는
ABI(Application Binary Interface)를 사용하기 위한 라이브러리
COM이란?
Microsoft가 만든 Component 규약 (이진 코드 레벨)
• Enables software components to communicate
• Re-usable software component
• Link components together to build applications
• Etc.
초보만
초보만
초보만
import win32com.client
Word = win32com.client.Dispatch(“Word.Application”)
Word.Visible = True
doc_1 = Word.Documents.Open(FileName)
doc_2 = Word.Documents.Add()
Excel = win32com.client.Dispatch(“Excel.Application”)
Excel.Visible = True
wb_1 = Excel.Workbooks.Open(FileName)
wb_2 = Excel.Workbooks.Add()
ws = wb_1.Worksheets(“Sheet1”)
PPT = win32com.client.Dispatch(“PowerPoint.Application”)
PPT.Visible = True
prs_1 = PPT.Presentations.Open(FileName)
prs_2 = PPT.Presentations.Add()
Slide = prs.Slides.Add(1, 12)
win32com
불러오기
02
동일한
형식
Word = win32com.client.Dispatch(“Word.Application”)
Word.Visible = True
doc = Word.Documents.Add()
para = doc.Paragraphs
para(1).Range.Text = “Winner Winnern"
para(1).Range.Font.Name = "Arial"
para(2).Range.Text = “Chicken Dinner“
para(2).Range.Font.Name = “Times New Roman”
for para in doc.Paragraphs:
print para.Range.Text
기본적인 구조
03
문단
클래스
+
리스트
느낌
Excel = win32com.client.Dispatch(“Excel.Application”)
Excel.Visible = True
wb = Excel.Workbooks.Add()
ws = wb.Worksheets(“Sheet1”)
ws.Cells(1, 1).Value = 36
ws.Cells(1, 2).Value = ws.Cells(1, 1).Value + 10
ws.Cells(2, 1).Formula = “=sum(A1, B1)”
기본적인 구조
03
좌표에
접근하면
끗
기본적인 구조
03
PPT = win32com.client.Dispatch(“Excel.Application”)
PPT.Visible = True
prs = ppt.Presentations.Add()
slide = prs.Slides.Add(1, 12)
slide_width = slide.Master.Width
slide_height = slide.Master.Height
pic = slide.Shapes.AddPicture(FileName=file_name,
LinkToFile=False, SaveWithDocument=True, Left=(slide_width/2)-100,
Top=(slide_height/2)-100, Width=200, Height=200)
rectangle = Slide.Shapes.AddShape(1, 100, 100, 200, 200)
rectangle.Fill.ForeColor.RGB = "000000"
rectangle.TextFrame.TextRange.Text = 'hello'
rectangle.TextFrame.TextRange.Font.Size = 12
slide.Shapes(1).AnimationSettings.EntryEffect = 3844
slide.Shapes(2).AnimationSettings.EntryEffect = 769
…
1.텍스트, 그림, 도형…
2.크기조절하고, 움직이고, 맨 앞으로 뒤로…
3.애니메이션 넣고 시간 조절하고….
4.도형 이름, 애니메이션 효과 이름 등등…
그냥 PPT에서 하는게 더 이득
기본적인 구조
03
마우스로
하세요
기본적인 구조
03
OBJECT
구조
모든 object에는 method와 property가 있다
예시) PowerPoint의
Effect object의 경우:
METHODS PROPERTIES
Delete Application
MoveAfter Behaviors
MoveBefore DisplayName
MoveTo EffectInformation
EffectParameters
EffectType
Exit
Index
Paragraph
Parent
Shape
TextRangeLength
TextRangeStart
Timing
PPT는 Properties가 많아서
실제 슬라이드를 안 보고
코드로만 설정하기 힘들다
기본적인 구조
03
OBJECT
구조
Object의 method와 property를 찾고 싶다면
https://msdn.microsoft.com/vba/office-vba-reference
몇 가지 예제
04
그럼에도
코딩하면
편한것들
MS Office 자동화
1.PPT -> Word 텍스트 이전
2.Word -> PPT 텍스트 이전
3.PPT 저장 시 없는 폰트 해결
몇 가지 예제
04
PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”)
PowerPoint.Visible = True
prs = PowerPoint.Presentations.Open(file_name)
Word = win32com.client.Dispatch(“Word.Application”)
Word.Visible = True
Doc = Word.Documents.Add()
for slide in prs.Slides:
for i, Shape in enumerate(slide.Shapes):
doc.Content.Paragraphs(i+1).Range.Text = Shape.TextFrame.TextRange.Text
PowerPoint.Quit()
PPT
↓
Word
텍스트
Shapes에 포함되는 것들
• 도형, 사진, OLE(Object linking and embedding)
몇 가지 예제
04
Word
↓
PPT
텍스트
Word = win32com.client.Dispatch(“Word.Application”)
Word.Visible = True
doc = Word.Documents.Open(file_name)
PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”)
PowerPoint.Visible = True
prs = PowerPoint.Presentations.Add()
for para in enumerate(doc.Paragraphs):
prs.Slides.Add(i+1, 12)
prs.Slides(i+1).Shapes.AddTextbox(Orientation=1, Left=10, Top=10,
Width=Slide.Master.Width,Height=Slide.Master.Height).Textframe.TextRange.Text
= para.Range.Text
prs.Slides(i+1).Shapes(1).TextFrame.TextRange.Font.Size=10
Word.Quit()
몇 가지 예제
04
from pywintypes import com_error
PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”)
PowerPoint.Visible = True
prs = PowerPoint.Presentations.Open(file_name)
for slide in prs.Slides:
for Shape in slide.Shapes:
try:
Shape.TextFrame.TextRange.Font.Name == missing_font
Shape.TextFrame.TextRange.Font.Name = new_font
except com_error:
pass
PPT
없는
폰트
변경

More Related Content

Similar to 파이썬 피피티 초보 테란만

Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015uEngine Solutions
 
Autonomous Drive for Smart Factory
Autonomous Drive for Smart FactoryAutonomous Drive for Smart Factory
Autonomous Drive for Smart Factoryminsukim134
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)JoonHee Lee
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성영재 김
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
C#강좌
C#강좌C#강좌
C#강좌e12g
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오Kihoon4
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guideJUNHEEKIM27
 
JSP 프로그래밍 2014-2018년 기말시험 기출문제
JSP 프로그래밍 2014-2018년 기말시험 기출문제JSP 프로그래밍 2014-2018년 기말시험 기출문제
JSP 프로그래밍 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
권기훈_포트폴리오
권기훈_포트폴리오권기훈_포트폴리오
권기훈_포트폴리오Kihoon4
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장sung ki choi
 
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...i2max
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 

Similar to 파이썬 피피티 초보 테란만 (20)

Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015
 
Autonomous Drive for Smart Factory
Autonomous Drive for Smart FactoryAutonomous Drive for Smart Factory
Autonomous Drive for Smart Factory
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
C#강좌
C#강좌C#강좌
C#강좌
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guide
 
JSP 프로그래밍 2014-2018년 기말시험 기출문제
JSP 프로그래밍 2014-2018년 기말시험 기출문제JSP 프로그래밍 2014-2018년 기말시험 기출문제
JSP 프로그래밍 2014-2018년 기말시험 기출문제
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
권기훈_포트폴리오
권기훈_포트폴리오권기훈_포트폴리오
권기훈_포트폴리오
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
 
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
Essencia 2017
Essencia 2017Essencia 2017
Essencia 2017
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 

파이썬 피피티 초보 테란만

  • 3. win32com이란? 01 COM(Component Object Model)이라는 ABI(Application Binary Interface)를 사용하기 위한 라이브러리 COM이란? Microsoft가 만든 Component 규약 (이진 코드 레벨) • Enables software components to communicate • Re-usable software component • Link components together to build applications • Etc. 초보만 초보만 초보만
  • 4. import win32com.client Word = win32com.client.Dispatch(“Word.Application”) Word.Visible = True doc_1 = Word.Documents.Open(FileName) doc_2 = Word.Documents.Add() Excel = win32com.client.Dispatch(“Excel.Application”) Excel.Visible = True wb_1 = Excel.Workbooks.Open(FileName) wb_2 = Excel.Workbooks.Add() ws = wb_1.Worksheets(“Sheet1”) PPT = win32com.client.Dispatch(“PowerPoint.Application”) PPT.Visible = True prs_1 = PPT.Presentations.Open(FileName) prs_2 = PPT.Presentations.Add() Slide = prs.Slides.Add(1, 12) win32com 불러오기 02 동일한 형식
  • 5. Word = win32com.client.Dispatch(“Word.Application”) Word.Visible = True doc = Word.Documents.Add() para = doc.Paragraphs para(1).Range.Text = “Winner Winnern" para(1).Range.Font.Name = "Arial" para(2).Range.Text = “Chicken Dinner“ para(2).Range.Font.Name = “Times New Roman” for para in doc.Paragraphs: print para.Range.Text 기본적인 구조 03 문단 클래스 + 리스트 느낌
  • 6. Excel = win32com.client.Dispatch(“Excel.Application”) Excel.Visible = True wb = Excel.Workbooks.Add() ws = wb.Worksheets(“Sheet1”) ws.Cells(1, 1).Value = 36 ws.Cells(1, 2).Value = ws.Cells(1, 1).Value + 10 ws.Cells(2, 1).Formula = “=sum(A1, B1)” 기본적인 구조 03 좌표에 접근하면 끗
  • 7. 기본적인 구조 03 PPT = win32com.client.Dispatch(“Excel.Application”) PPT.Visible = True prs = ppt.Presentations.Add() slide = prs.Slides.Add(1, 12) slide_width = slide.Master.Width slide_height = slide.Master.Height pic = slide.Shapes.AddPicture(FileName=file_name, LinkToFile=False, SaveWithDocument=True, Left=(slide_width/2)-100, Top=(slide_height/2)-100, Width=200, Height=200) rectangle = Slide.Shapes.AddShape(1, 100, 100, 200, 200) rectangle.Fill.ForeColor.RGB = "000000" rectangle.TextFrame.TextRange.Text = 'hello' rectangle.TextFrame.TextRange.Font.Size = 12 slide.Shapes(1).AnimationSettings.EntryEffect = 3844 slide.Shapes(2).AnimationSettings.EntryEffect = 769 …
  • 8. 1.텍스트, 그림, 도형… 2.크기조절하고, 움직이고, 맨 앞으로 뒤로… 3.애니메이션 넣고 시간 조절하고…. 4.도형 이름, 애니메이션 효과 이름 등등… 그냥 PPT에서 하는게 더 이득 기본적인 구조 03 마우스로 하세요
  • 9. 기본적인 구조 03 OBJECT 구조 모든 object에는 method와 property가 있다 예시) PowerPoint의 Effect object의 경우: METHODS PROPERTIES Delete Application MoveAfter Behaviors MoveBefore DisplayName MoveTo EffectInformation EffectParameters EffectType Exit Index Paragraph Parent Shape TextRangeLength TextRangeStart Timing PPT는 Properties가 많아서 실제 슬라이드를 안 보고 코드로만 설정하기 힘들다
  • 10. 기본적인 구조 03 OBJECT 구조 Object의 method와 property를 찾고 싶다면 https://msdn.microsoft.com/vba/office-vba-reference
  • 11. 몇 가지 예제 04 그럼에도 코딩하면 편한것들 MS Office 자동화 1.PPT -> Word 텍스트 이전 2.Word -> PPT 텍스트 이전 3.PPT 저장 시 없는 폰트 해결
  • 12. 몇 가지 예제 04 PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”) PowerPoint.Visible = True prs = PowerPoint.Presentations.Open(file_name) Word = win32com.client.Dispatch(“Word.Application”) Word.Visible = True Doc = Word.Documents.Add() for slide in prs.Slides: for i, Shape in enumerate(slide.Shapes): doc.Content.Paragraphs(i+1).Range.Text = Shape.TextFrame.TextRange.Text PowerPoint.Quit() PPT ↓ Word 텍스트 Shapes에 포함되는 것들 • 도형, 사진, OLE(Object linking and embedding)
  • 13. 몇 가지 예제 04 Word ↓ PPT 텍스트 Word = win32com.client.Dispatch(“Word.Application”) Word.Visible = True doc = Word.Documents.Open(file_name) PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”) PowerPoint.Visible = True prs = PowerPoint.Presentations.Add() for para in enumerate(doc.Paragraphs): prs.Slides.Add(i+1, 12) prs.Slides(i+1).Shapes.AddTextbox(Orientation=1, Left=10, Top=10, Width=Slide.Master.Width,Height=Slide.Master.Height).Textframe.TextRange.Text = para.Range.Text prs.Slides(i+1).Shapes(1).TextFrame.TextRange.Font.Size=10 Word.Quit()
  • 14. 몇 가지 예제 04 from pywintypes import com_error PowerPoint = win32com.client.Dispatch(“PowerPoint.Application”) PowerPoint.Visible = True prs = PowerPoint.Presentations.Open(file_name) for slide in prs.Slides: for Shape in slide.Shapes: try: Shape.TextFrame.TextRange.Font.Name == missing_font Shape.TextFrame.TextRange.Font.Name = new_font except com_error: pass PPT 없는 폰트 변경