ここでは、Pythonにおける「OpenPyXL」を用いたExcel操作する方法について初学者向けに解説しています。
この記事の対象
OpenPyXLとは
「OpenPyXL」とはExcel操作を簡単に行える外部ライブラリです。
Pandasと一緒に使用される場合もありExcelファイルの読込み、書込み等の操作が容易になる特徴があります。
表作成やチャート作成なども可能なので自動化する際に便利なものです。
OpenPyXLのインストール
外部ライブラリなので、「OpenPyXL」を使用する場合はインストールする必要があります。
$ pip install openpyxl
OpenPyXLを用いた使用例
ワークブックの作成
from openpyxl import Workbook
wb = Workbook()
wb.save('test.xlsx')
openpyxlを操作する場合は必ずWorkbookを指定する必要があります。任意の「.xlsx」ファイルを作成する場合は上記のようにWorkbookを開いて、任意のファイル名で保存するだけです。
ファイルの保存先はこの実行ファイルと同じ場所になります。
任意のシートを作成
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Title"
wb.save('test.xlsx')
上記のプログラムはTitleというシート名の「test.xlsx」ファイルを作成しているものです。openpyxlの操作ではWorkbookを指定したら、必ず「.active」として指定したWorkbookを操作するという宣言が必要です。
今回は任意のシートを作成したいので「.title」とすることでシートを作成しました。最後にtest.xlsxというファイル名で保存しています。
【結果】
シートに色を設定
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws.title = "Title"
ws.sheet_properties.tabColor = "1072BA"
wb.save('test.xlsx')
シートの色設定では「sheet_properties.tabColor」を使用する必要があります。colorコードで色を指定します。
【結果】
任意のセルに値を挿入
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Title"
ws['A1'] = 1
wb.save('test.xlsx')
上記のプログラムはTitleというシートのA1セルに1という数値を入力してtest.xlsxというファイル名で保存しているものです。
セルの操作を行う際はactiveなWorkbookを取得して「ws[‘***’]」とするだけです。
【結果】
任意のセルのフォント指定
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws.title = "Title"
ws['A1'] = 1
fontstyle = Font(name='Arial')
ws['A1'].font = fontstyle
wb.save('test.xlsx')
フォントの変更は「Font」関数を使用することで書式設定を変更できます。今回はフォントの書式を「Arial」に変更しています。フォント関数のオプションは以下になります。
項目 | 内容 |
bold | 太文字。Trueで有効 |
color | 色設定。colorコードで指定 |
italic | イタリック体設定。Trueで有効 |
name | フォントの書式設定。フォント名で指定 |
size | サイズの設定。小数点での指定が可能 |
shadow | 影の設定。Trueで有効 |
strike | 打ち消し線の設定。Trueで有効 |
underline | 下線設定。「single」「double」「singleAccounting」「doubleAccounting」が選択可能 |
【結果】
ドロップダウンリスト作成
from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation
wb = Workbook()
ws = wb.worksheets[0]
dv = DataValidation(
type="list",
formula1='"Yes,No"',
allow_blank=False,
showErrorMessage=True,
errorStyle="warning",
)
dv.add("B2:B5")
ws.add_data_validation(dv)
wb.save('test.xlsx')
ドロップダウンリストを作成する場合は「DataValidation」モジュールを使用する必要があります。
引数を設定してあげて、「.add()」で範囲を指定します。最後に「data_validation()」で反映させています。
よく使用される引数は以下になります。
項目 | 内容 |
allow_blank | 空白の無視設定。Trueで有効 |
showErrorMessage | エラー時のメッセージ表示有無。Trueで有効 |
error | エラー時の文言設定。任意の文字を設定 |
errorStyle | エラー時の処理設定。「warning」「informaiton」「stop」から選択 |
errorTitle | エラー時のタイトル文字設定。任意の文字を設定 |
formula1 | 入力可能な文字の設定。任意の文字を設定 |
type | 入力値の種類設定。「whole:整数」「time:時間」「date:日付」「textLength:文字列」「list:リスト」「custom:カスタム設定」「decimal:小数点」 |
【結果】
任意のセルの塗りつぶし
from openpyxl import Workbook
from openpyxl.styles import PatternFill
wb = Workbook()
ws = wb.active
ws.title = "Title"
set_fill = PatternFill(patternType='solid', fgColor='C5D9F1')
ws['A1'] = 1
ws['A1'].fill = set_fill
wb.save('test.xlsx')
セルを塗りつぶすには「PatternFill」を用いる必要があります。
「PatternFill」の引数としてはfgColorを指定して、反映させたいセルのfillに代入するだけです。
【結果】
任意のセルに条件付き書式を設定
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.styles import Font
from openpyxl.formatting.rule import CellIsRule, FormulaRule
wb = Workbook()
ws = wb.active
ws.title = "Title"
fill = PatternFill(patternType='solid', bgColor='00B0F0')
ws['A1'] = 1
ws['H6'] = "End"
rule = FormulaRule(
formula=['$H5="End"'],
fill=fill,
)
ws.conditional_formatting.add("H5:H30",rule)
wb.save('test.xlsx')
任意のセルに条件付き書式を設定するには「FormulaRule」を用いる必要があります。
ここでは、「End」の文字列があれば、セルの塗りつぶしを行っています。引数は「formula」と「fill」になります。formulaで条件を指定します。
【結果】
最低限押さえておきたい表現
項目 | 内容 |
wb=Workbook() | ワークブックの取得 |
ws=wb.active | ワークシートの取得 |
ws.title = “***” | ワークシートの名前を指定 |
wb.create_sheet(“***”,数値) | ***というワークシートを数値番目に挿入 |
ws.sheet_properties.tabColor = “***” | ワークシートの見出し色(カラーコード)の指定 ex)1072BA |
wb.sheetnames | ワークシート名の取得 |
ws[‘***’] | wsというワークシートのセルの直接指定 ex)A4,D9 |
ws.cell(row=***, column=***) | wsというワークシートのセルの行列を用いた指定 |
wb.save(‘***.xlsx’) | ワークブックを***という名前で保存 |
load_workbook(filename =’***.xlsx’) | ***という既存のファイルの読込み |
その他、OpenPyXLを用いた使用例
項目 | 内容 |
Pythonにおける基本的なExcel操作 | リンク先では、PythonにおけるExcelファイルの読込み、書込み方法について解説しています。 |
「Pandas」を用いた複数のCSVファイルの結合からチャート化まで | リンク先では、任意のCSVファイル(株価)を読込んでチャート作成する方法について解説しています。 |
Under construction . . . | Under construction . . . |