openpyxlでセルに値を入力できたんだけど、
セルの表示形式を数値や日付に変えたい…。
openpyxlでそこまでできないのかな?
なるほど…。
では今回は、「openpyxlでセルの表示形式を変更する方法」を
できるだけわかりやすく解説いたします!
また、「表示形式を標準に戻す方法」も解説いたしますので、
ぜひ最後まで読んでいってください。
openpyxlでセルの表示形式を設定する方法
「number_format」を使います。
今回は下記の表示形式に変更する方法を紹介いたします。
- パーセンテージ
- 文字列
- 日付
- 数値
まずは事前に準備する必要がある項目をチェックしてください。
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
表示形式を「パーセンテージ」にする
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = '0%'
wb.save('C://Utatane/output.xlsx')
上記コードにて、A1セルの表示形式を「パーセンテージ」に変更しています。
6・7行目を詳しく解説いたします。
cell = ws['A1']
コードの6行目で、「cell」という変数を作り、表示形式を変更したいセル(今回はA1)を代入しています。
今回はわかりやすく「cell」という名前にしましたが、何でも構いません。
しかしながら、変数名をつけるには注意点がありますので、下記記事をご参考ください。
cell.number_format = '0%'
コードの7行目でセルの表示形式を変更しています。
セルを代入した変数に続けて「.number_format」を書き、「=(イコール)」を書きます。
イコールの後ろに「’0%’」を書いたら、指定のセル(今回はA1)の表示形式が「パーセンテージ」になります。
右辺は必ず「’(クォーテーション)」で囲ってください。
囲わない動作しません。
下図が実行した結果です。
表示形式が「パーセンテージ」に変わりました。
下記のように指定することで、「小数点以下二桁」の表示を行うこともできます。
cell.number_format = '0.00%'
表示形式を「文字列」にする
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = '@'
wb.save('C://Utatane/output.xlsx')
上記コードにて、A1セルの表示形式を「文字列」に変更しています。
ここからは、コードの7行目のみ解説いたします。
cell.number_format = '@'
右辺に「’@’」を書いてください。
表示形式を「文字列」に変更できました。
表示形式を「日付」にする
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = 'yyyy-mm-dd'
wb.save('C://Utatane/output.xlsx')
上記コードにて、A1セルの表示形式を「日付」に変更しています。
cell.number_format = 'yyyy-mm-dd'
右辺を「’yyyy-mm-dd’」にしてください。
これで日付形式になります。
表示形式がユーザー定義になっていますが、セルの値が日付形式になっているのがわかるかと思います。
表示形式を「数値」にする
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = '0'
wb.save('C://Utatane/output.xlsx')
上記コードにて、A1セルの表示形式を「数値」に変更しています。
cell.number_format = '0'
右辺に「’0’」を書いてください。
こちらも「クォーテーション」で囲うことを忘れないでください。
表示形式が「ユーザー定義」になっていますが、セルの値が右揃えになっているので、数値表示になったことがわかるかと思います。
パーセンテージ同様、下図のように指定することで、「小数点以下の表示」などを行うこともできます。
cell.number_format = '0.00' #小数点以下二桁を表示
cell.number_format = '#,##0' #カンマ入りで表示(通貨表示)
cell.number_format = '#,##0.00' #カンマ入り&小数点以下二桁を表示
cell.number_format = '¥#,##0' #カンマ&¥入り
cell.number_format = '¥#,##0.00' #カンマ&¥入り&小数点以下二桁を表示
表示形式を「標準」に戻す方法
表示形式を「標準」に戻すこともできます。
コードを見ていきましょう。
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = 'General'
wb.save('C://Utatane/output.xlsx')
これまでと同様、7行目に注目です。
cell.number_format = 'General'
右辺に「General」を書くことで、表示形式を「標準」に戻すことができます。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでセルの表示形式を設定する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!