※このページではアフィリエイト広告を利用しています

【Python応用】OpenPyXLでとりあえず抑えておきたい操作-概要-

Python

ここでは、Pythonにおける「OpenPyXL」を用いたExcel操作する方法について初学者向けに解説しています。

この記事の対象

  • PythonでExcel操作を行いたい方
  • openpyxlの基本的な操作を知りたい方
  • Excel操作の自動化に挑戦したい方
スポンサーリンク
スポンサーリンク

OpenPyXLとは

https://openpyxl.readthedocs.io/en/stable/index.htmlより

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 . . .

タイトルとURLをコピーしました