「ExcelファイルをPDFファイルとして出力する方法は知ってます。でも、いちいち1ファイルずつ出力するのは面倒なんです。」
「できるなら、無料で出来る方法はありませんか?」
上記の疑問にお答えします。
Pythonのライブラリ「xlwings」を使用すれば、複数のExcelファイルをPDFファイルに変換することができます。
この記事では、以下について順番に説明します。
- 複数のExcelファイルをPDFファイルに変換する手順と概要
- 複数のExcelファイルをPDFファイルに変換するための準備
- ソースコードの提示&解説
「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し紹介させてください。
たいらーのプロフィール
- 文系四大出身。ソフトウェア開発の経験はなしですが、IT業界に身を置いています。
- 開発者やユーザーとのパイプ役など、業務にプログラミングスキルを活かす。
- Pythonは独学で習得。スクレイピングや作業の自動化などに勤しんでいます。
Excelのエクスポート機能をつかえば、PDFファイルに変換できますが、複数のファイルが対象となると繰り返し作業が大変ですよね。でも、提示したソースコードのコピペ&実行で、簡単に複数のExcelファイルをPDFファイルに変換することができるようになります。
複数ファイルの変換を無料でできるツールは、あまりないと思うので、この記事を参考にして、職場などで活用してみてください。
1.複数のExcelファイルをPDFファイルに変換する手順と概要
まず、どのようにExcelファイルをPDFファイルに変換するか説明します。
変換に必要なステップは次のとおりです。
- Pythonをインストールする。
- プログラムを実行するフォルダに以下を置く。
・実行するPythonのソースファイル
・変換対象のExcelファイル - プログラムを実行する。
プログラムの概要ですが、ざっくりと次のようなことをしています。(詳細は後述)
- フォルダ内のExcelファイルを探す。
- ExcelファイルをPDFファイルに変換する。
- 2をファイル数の分だけ繰り返す。
この記事ではイメージがしやすいように、請求書の置き換えを例にして話を進めます。
変換前のExcelファイルたちが、
指定したフォルダ上でPDFファイルに変換されます。(ここでは「PDF_Files」を指定。)
2.複数のExcelファイルをPDFファイルに変換するための準備
プログラミング言語は、Pythonを使用します。
Pythonの準備がまだの方は、『Python3のインストール方法【導入は10分で完了!】』を参考に環境構築をしてみてください。
変換には、Pythonのライブラリ「xlswings」を使用します。
Pythonの環境構築が済んでいる方は、「xlswings」をインストールします。コマンドプロンプトを起動し、以下のコマンドを入力後にEnterキーを押下してください。
「Successfully installed ~」が表示されればインストールは成功です。
py –m pip install xlswings
・xlswingsとは
xlswingsはExcelを直接操作するPythonのライブラリのひとつです。
Excelを操作するライブラリは、openpyxlなどがあるのですが、調べた感触だとopenpyxlはPDF変換には向いていないようなので、xlswingsを選択しています。
xlswingsは使用するにあたって以下の条件があります。
- Excelがインストールされている必要がある。
- 動作するOSはWindowsとMacのみ。
Excelアプリケーションを直接使用しているので、今回のプログラムを実行するとExcelを起動したり、ファイルを開いたりしますが、そういうものなので気にせず実行してください。
なので、事前にExcel側の印刷プレビューなど印刷範囲を確認し調整しておきましょう。
3.ソースコードの提示&解説
最後に、ソースコードの全文と解説です。
・全文と解説
import glob, xlwings as xw excel_files = glob.glob("*.xlsx") #excelファイルをすべて取得 savefile_path = "C:/git-local/PDF_Files/" #出力先のパスを設定 App = xw.App() #単一のアプリ実行環境管理 #ExcelファイルをPDFファイルに変換 for i in excel_files: filename = i.replace(".xlsx", ".pdf") wb = xw.Book(i) wb.to_pdf(path= savefile_path + filename, include=None, exclude=None, exclude_start_string='#', show=False) wb.close() App.quit() #アプリ実行環境を終了
1行目で、ファイルパスやファイル名を取得するために「glob」を、Excel操作するために「xlwings」をインポートしています。
3行目で、プログラム実行するフォルダ内のExcelファイルを取得しています。
4行目で、PDFファイルの出力先のパス指定をしています。今回はプログラム実行するフォルダ内に「PDF_Files」をつくり、そこを指定しています。この部分はご自身の環境に合わせてアレンジしてください。
6、15行目で単一アプリの実行環境の設定と終了をしています。
9~13行目で、ファイル数の数だけ、ExcelファイルをPDFファイルに変換しています。
12行目の補足ですが、それぞれのパラメータには次のような意味があります。
パラメータ | 説明 |
---|---|
path | PDFファイルの出力先。“None”で指定しない場合は、Excelファイルと同じファイル名、ファイルパスになる。 |
include | PDFファイルに変換するシートの指定。“None”で指定しない場合は、すべてのシートを同一PDFファイルとして出力。シート番号(1からカウント)とシート名で指定できる。 |
exclude | 変換を除外するシートの指定。“None”で指定しない場合は、除外なしで出力する。シート番号(1からカウント)とシート名で指定できる。 |
exclude_start_string | 除外するシートの先頭の文字列を指定。指定した文字列を先頭に持つシートは変換されない。デフォルトは“#”を設定。 |
show | 変換後にPDFファイルを非表示/表示するかの設定。“False”は非表示。 |
解説は以上です。
4.まとめ
以上、複数のExcelファイルをPDFファイルに変換する方法でした。
ソースコードはあまり複雑ではないので、理解しやすいかと思います。手間も少なく簡単に変換することができるので、この記事を参考にしつつ、実際にやってみてください。
さらに、Pythonの学習を深めて、より業務の効率化や自動化の技術を身につけたい方は、『Pythonで業務を効率化・自動化しよう【プログラミング未経験でも大丈夫】』の記事もおすすめです。
Pythonを使った業務効率化のテクニックや実際の使用例を紹介しており、プログラミングスキルを活かして日々の業務をよりスムーズに進めるためのヒントが満載です。ぜひこちらの記事もご覧ください
ご清聴ありがとうございました。