提出用の資料を作っているんだけど、
普通に印刷すると、不要な部分まで印刷されてしまう…。
openpyxlで印刷範囲を設定することはできないの?
簡単にできますよ!
「openpyxlで印刷範囲を設定する方法」を
できるだけわかりやすく解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
openpyxlで印刷範囲を設定するには
「print_area」を指定します。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws.print_area = 'A1:E5'
wb.save('output.xlsx')
ws.print_area = 'A1:E5'
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説:印刷範囲の設定
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
ws.print_area = 'A1:E5'
上記一文にて、ワークシートの印刷範囲を設定することができます。
今回の例では、セル「A1~E5」までが印刷範囲です。
<テンプレ>
【 ワークシートが入った変数.print_area = ‘印刷範囲’ 】
では、実行してみます。
一見変わっていないように見えますが、ショートカットキー(Ctrl+P)で「印刷プレビュー」を見てみましょう。
A6やF1が見えていないため、A1~E5が印刷範囲に設定されていることがわかります。
もう少しわかりやすくするために、「改ページプレビュー」を表示してみましょう。
(ショートカットキー「Alt+W」→「Alt+I」)
印刷範囲がA1~E5になっています。
すでに印刷範囲が設定されていた場合、変更もできるのでしょうか?
さきほどA1~E5まで設定した印刷範囲を、A1~C3に変更してみます。
ws.print_area = 'A1:C3'
実行してみます。
印刷範囲がA1~C3に変更できました。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで印刷範囲を設定する方法を解説いたしました。
印刷したくない部分を除外できるため、うまく活用してください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!