#今回の目的
PythonでExcelファイルをPDFに変換して出力する。
※例のごとく、説明はプログラムのコメントで記載しています。
###事前準備
Win32comパッケージのインストール(PythonでのCOMを通じたExcel操作のため)
https://github.com/mhammond/pywin32/releases
ここから、自分の環境に合わせてダウンロードインストール(pythonのバージョン、64ビットか32ビット)
※pipでもいいのかな?(やっていないですが)
###プログラムの流れ
①sample_pdf.xlsxファイルを取り込む
②PDFファイル名を作成(pdf_[title]_[createdate].pdf ※[]はエクセルから取得)
③PDFファイルを出力する
#プログラム実行結果確認
※プログラムは一番下
###出力ファイル(pdf_[title]_[createdate].pdf)
#プログラム
import pathlib
import openpyxl
from win32com import client
#読み込むエクセルファイル
in_filepass = pathlib.Path("./data/sample_pdf.xlsx")
#win32com > client > Excel操作オブジェクトを取得
xlApp = client.Dispatch("Excel.Application")
#sample_pdf.xlsxを取得(※resolveは相対パス⇒絶対パス)
book = xlApp.workbooks.open(str(in_filepass.resolve()))
for sheet in book.Worksheets:
#エクセルからタイトル(セルC2)を抽出
title = str(sheet.Range("C2").value)
#エクセルから資料作成日付(セルH2)を抽出
createdate = str(int(sheet.Range("H2").value))
#出力するPDFのファイルパスobjを作成(pdf_[title]_[createdate].pdf)
out_filepass = pathlib.Path("./data/output/pdf_" + title + "_" + createdate + ".pdf")
#PDFファイルを出力(※resolveは相対パス⇒絶対パス)
sheet.ExportAsFixedFormat(0, str(out_filepass.resolve()))
book.Close()
xlApp.Quit()
#まとめ
PDFもできました。やった感がありますね!
ただ、PDFはネットを調べているとExcelに戻せそうなので改ざんされると困るのであれば、使えなさそうですね。
win32comパッケージですが、いろんな事ができそうです。
ショートカットをつくったり、メールを自動保存したり。
このあたり、調べてみるのも面白い気がしました。
以上です、ありがとうございました(*'▽')