PythonでExcel(xlsx)ファイルを操作するためのOpenPyXLについて紹介します。
XlsxWriterやpython-excelなどPythonでExcelファイルを操作する方法は多くありますが、
OpenPyXLがナレッジが多く使いやすいのでオススメです。今回はOpenPyXLのインストールから基本的な使い
方について紹介します。
細かい使用方法をマニュアルを参照ください。
OpenPyXLのインストール
OpnePyXLをインストールするには「pip」を使用します。
pip install openpyxl
またPycharmでOpenPyXLをインストールする方法は以下にまとめてありますので参考にします。
Excelファイルの新規作成・読み込み・書き込み
Excelファイルを作成・読み込み・書き込みは、ワークブックのPythonクラスオブジェクトを使用します。
Excelのワークブックの新規作成
ワークブックを新規作成するには「Workbook()」を使用します。
import openpyxl
wb = openpyxl.Workbook()
以下が新規作成の実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.Workbook()
>>> print(wb)
<openpyxl.workbook.workbook.Workbook object at 0x000002B40AC49748>
>>>
Excelのワークブックの読み込み
ワークブックを読み込むには「load_workbook()」を使用します。
import openpyxl
wb = openpyxl.load_workbook(filename='[filename]', read_only=True)
以下が読み込みの実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.load_workbook('workBook.xlsx')
>>> print(wb)
<openpyxl.workbook.workbook.Workbook object at 0x000002B40AC3C2E8>
>>>
Excelのワークブックの書き込み
ワークブックを書き込むには「save()」を使用します。
import openpyxl
wb = openpyxl.save(filename='[filename]')
以下が書き込みの実行例です。
>>> import os
>>> import openpyxl
>>>
>>> wb = openpyxl.Workbook()
>>> wb.save(filename='sample.xlsx')
>>> os.path.exists('sample.xlsx')
True
>>>
Excelファイルのワークシートを追加・削除・選択
Excelファイルのワークシートの追加・削除・選択する方法を紹介します。
Excelのワークシートの追加
Excelのワークシートを追加するには「create_sheet()」を使用します。
import openpyxl
wb = openpyxl.Workbook()
wb.create_sheet('sheetname')
以下がワークシート追加の実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.Workbook()
>>> wb.create_sheet('workSheet')
<Worksheet "workSheet">
>>> print(wb.sheetnames)
['Sheet', 'workSheet']
>>>
Excelのワークシートの削除
Excelのワークシートを削除するには「remove()」を使用します。
多くのブログなどでは、「remove_sheet()」が紹介されてますが「DeprecationWarning」が発生します。
そのため、以下の方法を使用することをオススメします。
import openpyxl
wb = openpyxl.Workbook()
wb.remove(wb['sheetname'])
以下が読み込みの実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.Workbook()
>>>
>>> # ワークシート作成
... wb.create_sheet('workSheet')
<Worksheet "workSheet">
>>> print(wb.sheetnames)
['Sheet', 'workSheet']
>>>
>>> # ワークシート削除
... wb.remove(wb['workSheet'])
>>> print(wb.sheetnames)
['Sheet']
>>>
Excelのワークシートの選択
Excelファイルのワークシート操作対象を選択するには、ワークシートのクラスオブジェクトを使用します。
セルを操作する際に必要になりますので、必ずマスターしましょう。
「active」を紹介しているブログなどがありますが、
以下のようにコーディングすることでわかりやすくなります。
import openpyxl
wb = openpyxl.Workbook()
ws = wb['sheetname']
以下がワークシート追加の実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.Workbook()
>>> # ワークシート作成
... wb.create_sheet('sampleSheet')
<Worksheet "sampleSheet">
>>>
>>> # ワークシートを選択
... ws = wb['sampleSheet']
>>> print(ws)
<Worksheet "sampleSheet">
>>>
Excelファイルのセルの指定・読み込み・書き込み
Excelファイルのセルを操作する方法は以下に大きく分けて2種類あります。
「セル番号を指定する方法」と「行・列の番号で指定する方法」になります。
セル番号を指定するには「ws[’セル番号’]」を使用します。
import openpyxl
wb = openpyxl.Workbook()
ws = wb['sampleSheet']
ws['セル番号'].value
行・列の番号で指定するには「cell()」を使用します。
import openpyxl
wb = openpyxl.Workbook()
ws = wb['sampleSheet']
ws.cell(column=<列番号>, row=<行番号>, value=<セル値>)
ループ処理で「cell()」を使用して、それ以外ではセル番号で指定することで読みやすいコードになります。
セルの値を読み込む
Excelファイルのセルの値を読み込むには「value」を使用します。
import openpyxl
wb = openpyxl.Workbook()
ws = wb['sampleSheet']
ws['セル番号'].value
ws.cell(column=<列番号>, row=<行番号>).value
以下が読み込みの実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.load_workbook('workBook.xlsx')
>>> ws = wb['Sheet1']
>>> print(ws['A1'].value)
CellValue A1
>>> print(ws.cell(column=1, row=2).value)
CellValue A2
>>>
セルの値を書き込む
Excelファイルのセルの値を書き込むには「value」に値を代入します。
import openpyxl
wb = openpyxl.Workbook()
ws = wb['sampleSheet']
ws['セル番号'].value
ws.cell(column=<列番号>, row=<行番号>, value=<セル値>)
以下が書き込みの実行例です。
>>> import openpyxl
>>>
>>> wb = openpyxl.load_workbook('workBook.xlsx')
>>> ws = wb['Sheet1']
>>>
>>> print(ws['A1'].value)
CellValue A1
>>> print(ws.cell(column=1, row=2).value)
CellValue A2
>>>
>>> # セルへの書き込み
... ws['A1'].value = 'Written CellValue A2'
>>> ws.cell(column=1, row=2 , value='Written CellValue A2')
<Cell 'Sheet1'.A2>
>>>
>>> print(ws['A1'].value)
Written CellValue A2
>>> print(ws.cell(column=1, row=2).value)
Written CellValue A2
>>>