0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonを使ってエクセルファイルをpdfに変換する

Last updated at Posted at 2023-07-15

はじめに

Pythonを使って、エクセルの表をPDFファイルに変換する方法は、インターネットで簡単に見つけることができました。ただ、表が複数ページにまたがる場合、最初の2行(タイトル行)をすべてのページに表示させる方法については悩みました。そこで、この問題の解決策をメモとして残すことにしました。

印刷設定してからpdfファイル

例えば、次のようなエクセルの表があります。行は1から491まであります。この表を何も設定せずにPDF化すると、複数のページに分割された表が作成されますが、タイトル行(例:銘柄コードなど)は最初のページにしか印刷されません。どうすればいいのかと悩みましたが、最初に印刷設定を行ってから、PDFファイルに変換すればよいことに気づき、プログラムを作ることにしました。

スクリーンショット 2023-07-15 143509.png

印刷設定は、次の記事で紹介されており、参考にさせていただきました。

ソースコード

from openpyxl import load_workbook
import win32com.client    

#pdfファイルにしたいエクセルファイルを開く
file_name="C:\\○○○\\○○○\\○○○.xlsx" 
wb=load_workbook(file_name)  #エクセルファイルの読み込み
ws_list = [ws.title for ws in wb.worksheets] #各シートをpdfファイルにするために、リストを作る。

#シート分だけ印刷設定を変更する
for i, ws in enumerate(wb.worksheets):
    ws.print_title_rows='1:2' #ページの先頭にタイトル行をいれる場合、ここで設定する。
    ws.oddHeader.center.text=str(ws_list[i])
    wps=ws.page_setup
    wps.fitToWidth=1
    wps.fitToHeight=0
    ws.sheet_properties.pageSetUpPr.fitToPage = True
wb.save(file_name)    #エクセルファイルを保存(上書き)
wb.close()

#ここからpdf化
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open(file_name)
for j, ww in enumerate(ws_list):    
    file.WorkSheets(j+1).Select()
    file.ActiveSheet.ExportAsFixedFormat(0,"C:\\○○○\\○○○\\○○○_"+ww+".pdf")
file.Close()

結果

このようなタイトル行が全部のページに入ったpdfファイルができました。
最初のページ
スクリーンショット 2023-07-15 144535.png

最後のページ
スクリーンショット 2023-07-15 164723.png

その他

プログラムを作っているとき、

PermissionError: [Errno 13] Permission denied:

というエラーが出る時がありました。

エクセルが開かれていると思われる状態であるにもかかわらず、実際には開いていない場合があります。このような場合、次の手順を試してみてください。

  1. タスクマネージャーを開きます(Ctrl+Alt+Deleteを押します)。
  2. プロセスタブを選択し、エクセルのプロセスが実行中かどうかを確認します。
  3. エクセルのプロセスを見つけたら、それを選択し、Deleteキーを押してプロセスを終了させてください。
    これにより、不要にエクセルが起動している場合、それを終了させることができます。
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?