openpyxlでエクセルファイルを編集しているんだけど、
表を見やすくするために、テーブルを作成したい…。
なるほど…。
では今回は、「openpyxlでテーブルを作成する方法」を
できるだけわかりやすく解説いたします。
openpyxlでテーブルを作成する方法
「Table」と「TableStyleInfo」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import openpyxl
from openpyxl.worksheet.table import Table, TableStyleInfo
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
tab = Table(displayName='table', ref='A1:E5')
style = TableStyleInfo(name='TableStyleMedium6')
tab.tableStyleInfo = style
ws.add_table(tab)
wb.save('C:/Utatane/output.xlsx')
tab = Table(displayName='table', ref='A1:E5')
style = TableStyleInfo(name='TableStyleMedium6')
tab.tableStyleInfo = style
ws.add_table(tab)
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート
まずはインポートの解説です。
import openpyxl
from openpyxl.worksheet.table import Table, TableStyleInfo
上記コードにて、「openpyxl」の他に、テーブルを作成するライブラリもインポートしています。
「ライブラリ」や「インポート」に関しては、インストール方法の記事をご参考ください。
テーブルの範囲を設定
tab = Table(displayName='table', ref='A1:E5')
上記コードにて、テーブルを作成する範囲を設定します。
【コードの解説】
新しい名前の変数を書いたら、「=(イコール)」を書きます。
今回はわかりやすくするために「tab(tableの略)」という変数名にしましたが、何でも構いません。
しかしながら、つけられない名前があったりしますので、下記記事をご参考ください。
イコールの後ろには、「Table()」を書きます。
()内には、「テーブルの名前」と「テーブルの範囲」を指定します。
テーブルの名前は何でも構いません。「displayName=」の後ろに書き、「’(クォーテーション)」で囲ってください。
テーブルの範囲も、「ref=」の後ろに書き、クォーテーションで囲いましょう。
今回の場合は、A1~E5セルまでがテーブルとなります。
「Table」や「displayName」は大文字と小文字が混在していますのでご注意ください。
全部小文字にすると正常に動きません。
<テーブルの範囲設定テンプレ>
【 変数 = Table(displayName=’テーブルの名前’, ref=’テーブルの範囲’) 】
テーブルのスタイルを設定
次に、テーブルのスタイルを設定します。
style = TableStyleInfo(name='TableStyleMedium6')
【コードの解説】
また新しい名前の変数とイコールを書いたら、「TableStyleInfo()」を書きます(大文字小文字混在注意)
()内にテーブルのスタイルを指定します。
今回は「TableStyleMedium6」というスタイルにしましたが、他にもあります。
詳細は後ほど「テーブルをカスタマイズしよう」の項で紹介いたします。
<テーブルのスタイル設定テンプレ>
【 変数 = TableStyleInfo(name=’テーブルのスタイル’) 】
テーブルを適用
tab.tableStyleInfo = style
ws.add_table(tab)
上記コードにて、7~8行目で設定したテーブルをエクセルファイルに適用しています。
【コードの解説】
<9行目>
テーブルの範囲を設定した変数に続けて「.tableStyleInfo =」を書き、スタイルを設定した変数を書きます。
<10行目>
エクセルのワークシートが入った変数に続けて「.add_table()」を書きます。
()内には、テーブルを設定した変数を書いて完了です。
以上でテーブルを作成することができます。
すべて基本の形ですので、押さえておきましょう。
ここからは、テーブルをいろいろとカスタマイズする方法を紹介いたします。
テーブルをカスタマイズしよう
今回紹介するカスタマイズは下記の3つです。
- 基本スタイルの種類
- 縞々にする
- 列を強調する
1つ1つ解説していきます。
基本スタイルの種類
基本スタイルとは、前項の8行目で設定したスタイル(TableStyleMedium6)のことです。
style = TableStyleInfo(name='TableStyleMedium6')
基本スタイルは大きく分けて3つあります。
- TableStyleDark
- TableStyleMedium
- TableStyleLight
すべて色合いが異なりますので、いろいろ試して好みの色を見つけてみてください。
TableStyleDark
TableStyleDark1~TableStyleDark11まであります。
TableStyleMedium
TableStyleMedium1~TableStyleMedium28まであります。
TableStyleLight
TableStyleLight1~TableStyleLight21まであります。
縞々にする
テーブルを縞々にするには、コードの8行目のところで、下記のコードを追加します。
- showRowStripes=True : 行を縞々にする
- showColumnStripes=True : 列を縞々にする
【行を縞々にする】
style = TableStyleInfo(name='TableStyleMedium6', showRowStripes=True)
【列を縞々にする】
style = TableStyleInfo(name='TableStyleMedium6', showColumnStripes=True)
列を強調する
最初や最後の列を強調することができます。
設定方法は、コードの8行目で下記のコードを追加します。
- showFirstColumn=True : 最初の列を強調
- showLastColumn=True : 最後の列を強調
【最初の列を強調】
style = TableStyleInfo(name='TableStyleMedium6', showFirstColumn=True)
【最後の列を強調】
style = TableStyleInfo(name='TableStyleMedium6', showLastColumn=True)
縞々と強調を同時に適用することも可能です。
style = TableStyleInfo(name='TableStyleMedium6', showLastColumn=True, showRowStripes=True)
表のテーマや自分の好みに合わせてカスタマイズしてみてください。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでテーブルを作成する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!