본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] win32com.client 엑셀 파일 저장 및 옵션

반응형

* Win32com.client로 엑셀 다루기 포스팅

1편 : 2021.11.23 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 사용하기 기초

2편 : 2021.12.14 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 시트 다루기

3편 : 2021.12.22 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 차트 다루기

4편 : 2021.12.30 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 셀서식 지정하기

5편 : 2022.01.02 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 영역 선택하는 방법 4가지 

6편 : 2022.01.17 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 엑셀 파일 저장 및 옵션

 


  이번 포스팅은 win32com.client을 통해 파일을 저장하는 옵션에 대해 다뤄본다. 아래 코드는 이전 포스팅에서 많이 다뤄왔으므로 설명을 생략.

 

<코드>

import win32com.client

#excel App 열기(객체 생성)
excel = win32com.client.Dispatch("Excel.Application")

#엑셀 실행과정이 보이게
excel.Visible = True

#Workbook 객체 생성(새로 추가)
wb = excel.Workbooks.Add()

#활성화 된 시트 Worksheet 객체로 생성
ws = wb.ActiveSheet

#ws 객체의 "A1" 위치에 "투손플레이스" 입력
ws.cells(1,1).Value = "투손플레이스"

 

<결과>

 

1. Save( )

 

  Save 함수의 사용법은 간단하다. Workbook 객체에 Save( ) 를 사용하면 된다.

 

<코드>

wb.Save()

 

<결과>

 

  Workbook 객체를 Save( )하면, PC의 문서 폴더에 통합문서라는 이름으로 파일이 생성되게 된다.

(넘버링은 순서대로 저장된다.)

 

 

2. SaveAS

 

  SaveAS 함수는 엑셀 프로그램에서 "다른 이름으로 저장하기" 기능과 같은 함수이다. Microsoft에서 제공하는 공식 문서를 확인해봤다.

 

  일단 사용법은 Save( ) 함수와 마찬가지롣 대상이 Workbook object이다. 내부 옵션을 간단히 표현하면 아래와 같다.

 

"Workbook 객체".SaveAs(파일명, 파일포맷, 비밀번호...)

 

  함수의 파라미터가 굉장히 많은데 보통 사용할 때는, FineName과 FileFormat, 비밀번호 정도만 사용하지 않을까 싶어 뒤에는 설명을 생략했다.

 

  위 파일 wb를 기준으로 저장 옵션을 바꿔 실행해보려고 한다.

 

 

<Case1 : csv 파일로 저장하기>

 

Microsoft 공식 문서 확인시 FileFormat = 6 은 .csv 파일이다. 

 

 

경로 지정 및 Fileformat = 6으로 지정하여 저장하면

 

<코드>

path = r"C:\Users\Desktop\VS CODE\Project\17. win32com\결과"
wb.SaveAs(path+"/test1", 6)

 

<결과>

 

<Case2 : .xls 파일로 저장하기>

 

 xls의 경우 FileFormat = 56 이다.

 

 

<코드>

path = r"C:\Users\Desktop\VS CODE\Project\17. win32com\결과"
wb.SaveAs(path+"/test2", 56)

 

<결과>

 

<Case3 : Fileformat 설정않고 파일명으로 저장>

 

  윈도우에 파일확장자가 나오게 설정되어있으면, FileFormat을 설정하지 않고 파일명으로 설정하여도 그대로 저장되는 것 같다.

 

<코드>

path = r"C:\User\Desktop\VS CODE\Project\17. win32com\결과"
wb.SaveAs(path+"/test3.xls")

 

<결과>

 

3. ExportAsFixedFormat( )

  블로그에 유입되는 검색어 중에 하나가 엑셀을 pdf 파일로 변환하는 법이다. 파이썬 win32com.client에서는 ExportAsFixedFormat이라는 함수를 제공한다. 이 함수를 사용하면 엑셀 파일을 pdf로 변환할 수 있다. 이전에 관련하여 포스팅을 작성한 적이 있어 아래 참고링크를 남긴다.

 

(참고링크 : 2021.06.21 - [코딩/업무자동화] - [파이썬/업무자동화] 엑셀 파일 시트별 pdf 저장/변환하기)

 

 

  1~2번까지 공부했던 Save, SaveAs 함수의 경우 대상이 되는 객체가 Workbook이지만 ExportAsFixedFormat은 대상이 되는 객체가 Worksheet이다. 이 함수 또한 옵션값이 매우 많으나 아래 4개 옵션만 알아도 사용상 문제는 없을 것 같다.

 

<사용법>

"WorkSheet 객체".ExportAsFixedFormat(Type, FileName, From, To)

 

-. Type : 0 or 1 , PDF 로 저장하려면 0으로 설정한다.

-. FileName :  경로 및 파일명 입력

 

-. From : 해당 워크시트에서 저장할 시작페이지

 

-. To : 해당 워크시트서 저장할 마지막 페이지

 

 

<코드>

path = r"C:\Users\Desktop\VS CODE\Project\17. win32com\결과"
ws.ExportAsFixedFormat(Type=0, Filename=path+"/test.pdf",From=1,To=1)

 

<결과>

폴더에 test.pdf 파일이 저장 됨.


※ 참고링크

https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.saveas

 

Workbook.SaveAs method (Excel)

Office VBA reference topic

docs.microsoft.com

 

https://docs.microsoft.com/en-us/office/vba/api/excel.xlfileformat

 

XlFileFormat enumeration (Excel)

Office VBA reference topic

docs.microsoft.com

 

728x90