【Python으로 업무 효율화】의뢰: 이 폴더에 있는 Excel 전부 PDF로 해 주세요.

소개



이런 일이있었습니다.
선배「폴더에 있는 130건의 Excel 파일, 〇〇라고 시트명에 쓰고 있는 시트만 PDF로 해 주었으면 좋겠어요. 잘 부탁드립니다!」
나 「알겠습니다. 되는 하야에서 합니다!」
작업 · · ·
나 「할 수 있었습니다!」
선배「오, 고마워. 살아났다!」
나 「음, 지쳤어...」
Python 「에. 나로 Excel 파일을 PDF로 할 수 있을지 모르겠어?」
나 「진짜인가. 또 앞으로도 이런 작업이 있으니까, 이번에는 효율화할 수 있도록 조사해 볼까!」



그래서 비망록도 겸하고 폴더에있는 많은 Excel 파일을 PDF로 해 두는 코드의 해설을 해 나가고 싶습니다.

Excel 파일을 PDF로 만들자.



Excel을 조작하기 위해 win32com이라는 모듈을 사용합니다.
이 모듈을 설치한 적이 없으면 pip로 설치합니다.
pip install pywin32

처음에는 하나의 Excel 파일의 첫 번째 시트를 PDF로 변환하는 프로그램을 작성해 보았습니다.

code.py
import win32com.client 
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open(r"C:\aa\bb.xlsx")
file.WorkSheets(1).Select()
file.ActiveSheet.ExportAsFixedFormat(0,r"C:\aa\bb")
file.Close()

첫 번째 줄은 win32com 가져오기
두 번째 줄은 Excel을 조작합니다.
세 번째 줄은 PDF로 만들 Excel 파일의 절대 경로
※ 'r'을 사용하여 원시 문자열로 취급합니다.
네 번째 줄은 시트의 인덱스를 지정합니다 (이 경우 첫 번째 시트).
※시트명으로 지정할 때는, 「시트명」으로 합니다. 여러 시트를 선택하려면 목록을 사용하여 지정합니다.
5행은 이 폴더에 Excel과 같은 이름으로 PDF로 해서 쓰고 있습니다. 제1 인수를 0으로 하는 것으로, PDF로 변환해 주세요.
여섯 번째 줄에서 열린 파일을 닫습니다. 이렇게 하지 않으면 Excel이 읽기 전용으로 유지됩니다.

폴더의 모든 Excel을 PDF로



다음으로, 폴더의 Excel 모두를 PDF로 하는 프로그램을 써 가고 싶습니다.

우선 폴더를 지정하고, 그 폴더에 있는 모든 파일명을 확장자 포함해 리스트에 격납했습니다.
그리고 그 파일을 하나씩 PDF로 변환합니다. 성공적으로 변환할 수 없는 경우에도 예외 처리를 사용하여 파일을 닫도록 파일을 제대로 닫도록 했습니다.
Excel 이름을 PDF 이름으로 만들 수 있도록 splitext()를 사용하여 파일 이름과 확장명을 분리한 다음 ExportAsFixedFormat() 인수에 전달했습니다.

code.py
import win32com.client 
import os

excel = win32com.client.Dispatch("Excel.Application")

path = 'C:/aa/'
files = []

for filename in os.listdir(path):
    if os.path.isfile(os.path.join(path, filename)):
        files.append(filename)

for i in range(0,len(files)):
  try:
    file = excel.Workbooks.Open(path + '/' + files[i])
    file.WorkSheets("AA").Select()
    name, ext = os.path.splitext(files[i])
    file.ActiveSheet.ExportAsFixedFormat(0, path + '/' + name)
  except Exception as e:
    print(e)
  finally:
    file.Close()

사이고에게



이제 Excel이 몇 건 있어도 PDF로 쉽게 변환 할 수 있습니다!
파이썬 대단해!

좋은 웹페이지 즐겨찾기