PythonでExcelファイルをPDFに変換する方法

公開日:  

python Excel


Pythonを使ってExcelシートをPDFに変換する方法を書きます。
PythonでExcelファイルをいじるライブラリは色々あるみたいですが、今回はwin32comというモジュールを使用します。

win32comはWindowsのCOMオブジェクトを操作できます。ExcelのVBAでもCOMオブジェクトを使いますね。

環境

  • Windows 10
  • Microsoft Excel 2016
  • Python 3.6.2

インストール

win32comはデフォルトで入っていないためインストールします。

pip install pywin32

これでimport win32comできるようになります。

ExcelファイルをPDFに変換する

変換前のExcelファイル(.xlsx)は適当に用意しました(ただのExcelのテンプレートを持ってきただけです)。
1つのシートがひと月分のカレンダーになっていて、それが12シート(1年分)あります。
これを一つのPDFファイルに変換します。

Excelファイル

Excelファイル

ExcelファイルをPDFに変換するには、win32comからExcelを操作して、ファイルを開く→PDFで保存するだけです。

以下、サンプルプログラムを載せます。

import win32com.client
from pywintypes import com_error


# 絶対パスで指定してね
WB_PATH = r'C:\hoge\fuga\年のカレンダー.xlsx'
PATH_TO_PDF = r'C:\hoge\fuga\年のカレンダー.pdf'


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

excel.Visible = False

try:
    print('PDFへ変換開始')

    # 開く
    wb = excel.Workbooks.Open(WB_PATH)

    # 保存したいシートをインデックスで指定。1が最初(一番左)のシート。
    ws_index_list = [1,2,3,4,5,6,7,8,9,10,11,12]
    wb.WorkSheets(ws_index_list).Select()

    # 保存
    wb.ActiveSheet.ExportAsFixedFormat(0, PATH_TO_PDF)
except com_error as e:
    print('失敗しました')
else:
    print('成功しました')
finally:
    wb.Close()
    excel.Quit()

12シートすべてを指定して、PDFファイルにエクスポートしています。

出力されたPDFは以下です。

出力されたPDFファイル

出力されたPDFファイル

思ったより簡単にPDFにできました。
他にもいろいろできそうでおもしろいですね。

参考

以下も参考にしてください。



関連記事