PythonでExcelをPDFに変換する方法

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

Pythonなら、Excelファイルが単体でも複数でも、プログラムを実行するだけでPDF変換があっという間にできて仕事が爆速化します。

この記事ではpywin32というライブラリを使用した方法を、次の2パターンでご紹介します。

  1. 特定のExcelファイルをPDFに変換する
  2. 複数のExcelファイルをまとめてPDFに変換する

特定のExcelファイルをPDFに変換

“旅行日程_A様.xlsx”を指定してPDFにしました。

#特定のExcelファイルをPDFに変換
import win32com.client
import os

#エクセルアプリケーションを使用する宣言
excel=win32com.client.Dispatch("Excel.Application")

#ファイル名を指定
xlsx_file="旅行日程_A様.xlsx"

path=os.path.join(os.getcwd(), xlsx_file)#ファイルがあるディレクトリのパスとファイルパスをくっつける

file=excel.Workbooks.Open(path)

#対象シートを指定
file.WorkSheets(1).Activate()

#PDFのファイル名を生成
pdf_filename=path.split(".")[0]

#PDFファイルのパスを生成
pdf_path=os.path.join(os.getcwd(), pdf_filename)

#PDFに変換
file.ActiveSheet.ExportAsFixedFormat(0, pdf_path)


#エクセルを閉じる
file.Close()
excel.Quit()

コーディング解説

9行目で、PDF化したいファイル名を””内に入力してください。

11行目ではjoinという関数を使い、ファイルのあるディレクトリと、9行目で取得したファイルの絶対パスを結合しています。

指定ファイルの絶対パスをos.getcwd()を使用して取得していますが、

os.path.abspath()を利用して、path=os.path.abspath(xlsx_file)と書いてもOKです。

19行目で、PDFのファイル名が「元のExcelファイル名と同じ名前+拡張子」になります。

複数のExcelファイルをまとめてPDFに変換

特定フォルダ内にある、すべてのExcelファイルをPDFに変換したい場合です。

#複数のExcelファイルをまとめてPDFに変換
import win32com.client
import os
from glob import glob

#エクセルアプリケーションを起動
excel=win32com.client.Dispatch("Excel.Application")

#フォルダ内のxlsxファイルを取得
xlsx_files=glob(os.path.join(os.getcwd(), "*.xlsx"))

for xlsx_file in xlsx_files:
    #エクセルファイルを開く
    file=excel.Workbooks.Open(xlsx_file)
    
    #対象シートを指定(例えば、最初のシートを指定する場合)
    sheet=file.WorkSheets(1)
    sheet.Activate()

    #PDFファイル名を生成    
    pdf_filename=xlsx_file.split(".")[0]
    
    #PDFファイルの絶対パスを生成
    pdf_path=os.path.join(os.getcwd(), pdf_filename)

    #PDF変換
    sheet.ExportAsFixedFormat(0, pdf_path)

    #エクセルを閉じる
    file.Close()

#エクセルアプリケーションを終了
excel.Quit()

コーディング解説

すべてのExcelファイルをPDFに変換するには、for文を使います。

10行目ですべてのExcelファイル、つまり拡張子が.xlsxで終わるファイルを*.xlsxで取得し、フォルダの絶対パスとつなげています。

このように一瞬ですべてのExcelファイルがPDFになりました!

補足

印刷設定もコードに追加すれば、Excelファイルの向きや余白も手動で設定する必要がなくなります!

URLリンクが付いている場合はリンクも保持されます。

ABOUT US
中野友梨
旅行業の会社を運営。
慶応義塾大学卒

書類作成、確認作業などに追われる日々の仕事。
一生懸命やっているつもりだった。
計算ミス、手配ミスにヒヤヒヤする日々。
仕事の効率をなんとかしなけらばいけないと思っていたけど、 どうしたらよいのか分からなかった。
Pythonの世界なんて、全く知らなかった。
そんな私がPythonで仕事が効率化されることによって、公私ともに大きく 変わるとは、夢にも思っていなかった..。

業務効率化のためにPythonを始めたことがきっかけで、Pythonにはまりました。(個人利用レベル)
詳細はこちら

労働時間が大きく削減され、仕事が大カイゼンされて自由な時間も生まれました。
私のした素晴らしい経験を共有したい、仕事の効率が悪いけど、どうにかしたいという悩みを持った人々に向けて、 Pythonがいいよ、と教えてあげたい。
このブログでは、私が経験したエラー解決や迷い所、Pythonの活用方法をお伝えします。