こんにちは!シミダイ(@shimidai2100)です。
PythonでExcel(xlsx)ファイルを操作するためのOpenPyXLについて紹介します。
XlsxWriterやpython-excelなどPythonでExcelファイルを操作する方法は多くありますが、OpenPyXLがナレッジが多く使いやすいのでオススメです。
今回はOpenPyXLのインストールから基本的な使い方について紹介します。
細かい使用方法をマニュアルを参照ください。
Contents
OpenPyXLのインストール
OpnePyXLをインストールするには「pip」を使用します。
1 |
pip install openpyxl |
またPycharmでOpenPyXLをインストールする方法は以下にまとめてありますので参考にします。
-
-
PyCharmにライブラリをインストール・アップデートする手順
こんにちは!シミダイ(@shimidai2100)です。 PyCharmで追加のライブラリを「Python Package Index」などリポジトリからインストールとアップデートする方法を紹介します ...
続きを見る
Excelファイルの新規作成・読み込み・書き込み
Excelファイルを作成・読み込み・書き込みは、ワークブックのPythonクラスオブジェクトを使用します。
Excelのワークブックの新規作成
ワークブックを新規作成するには「Workbook()」を使用します。
1 2 3 |
import openpyxl wb = openpyxl.Workbook() |
以下が新規作成の実行例です。
1 2 3 4 5 6 |
>>> import openpyxl >>> >>> wb = openpyxl.Workbook() >>> print(wb) <openpyxl.workbook.workbook.Workbook object at 0x000002B40AC49748> >>> |
Excelのワークブックの読み込み
ワークブックを読み込むには「load_workbook()」を使用します。
1 2 3 |
import openpyxl wb = openpyxl.load_workbook(filename='[filename]', read_only=True) |
以下が読み込みの実行例です。
1 2 3 4 5 6 |
>>> import openpyxl >>> >>> wb = openpyxl.load_workbook('workBook.xlsx') >>> print(wb) <openpyxl.workbook.workbook.Workbook object at 0x000002B40AC3C2E8> >>> |
Excelのワークブックの書き込み
ワークブックを書き込むには「save()」を使用します。
1 2 3 |
import openpyxl wb = openpyxl.save(filename='[filename]') |
以下が書き込みの実行例です。
1 2 3 4 5 6 7 8 |
>>> import os >>> import openpyxl >>> >>> wb = openpyxl.Workbook() >>> wb.save(filename='sample.xlsx') >>> os.path.exists('sample.xlsx') True >>> |
Excelファイルのワークシートを追加・削除・選択
Excelファイルのワークシートの追加・削除・選択する方法を紹介します。
Excelのワークシートの追加
Excelのワークシートを追加するには「create_sheet()」を使用します。
1 2 3 4 |
import openpyxl wb = openpyxl.Workbook() wb.create_sheet('sheetname') |
以下がワークシート追加の実行例です。
1 2 3 4 5 6 7 8 |
>>> import openpyxl >>> >>> wb = openpyxl.Workbook() >>> wb.create_sheet('workSheet') <Worksheet "workSheet"> >>> print(wb.sheetnames) ['Sheet', 'workSheet'] >>> |
Excelのワークシートの削除
Excelのワークシートを削除するには「remove()」を使用します。
多くのブログなどでは、「remove_sheet()」が紹介されてますが「DeprecationWarning」が発生します。
そのため、以下の方法を使用することをオススメします。
1 2 3 4 |
import openpyxl wb = openpyxl.Workbook() wb.remove(wb['sheetname']) |
以下が読み込みの実行例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
>>> 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」を紹介しているブログなどがありますが、以下のようにコーディングすることでわかりやすくなります。
1 2 3 4 |
import openpyxl wb = openpyxl.Workbook() ws = wb['sheetname'] |
以下がワークシート追加の実行例です。
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> import openpyxl >>> >>> wb = openpyxl.Workbook() >>> # ワークシート作成 ... wb.create_sheet('sampleSheet') <Worksheet "sampleSheet"> >>> >>> # ワークシートを選択 ... ws = wb['sampleSheet'] >>> print(ws) <Worksheet "sampleSheet"> >>> |
Excelファイルのセルの指定・読み込み・書き込み
Excelファイルのセルを操作する方法は以下に大きく分けて2種類あります。
「セル番号を指定する方法」と「行・列の番号で指定する方法」になります。
セル番号を指定するには「ws[’セル番号’]」を使用します。
1 2 3 4 5 |
import openpyxl wb = openpyxl.Workbook() ws = wb['sampleSheet'] ws['セル番号'].value |
行・列の番号で指定するには「cell()」を使用します。
1 2 3 4 5 |
import openpyxl wb = openpyxl.Workbook() ws = wb['sampleSheet'] ws.cell(column=<列番号>, row=<行番号>, value=<セル値>) |
ループ処理で「cell()」を使用して、それ以外ではセル番号で指定することで読みやすいコードになります。
セルの値を読み込む
Excelファイルのセルの値を読み込むには「value」を使用します。
1 2 3 4 5 6 |
import openpyxl wb = openpyxl.Workbook() ws = wb['sampleSheet'] ws['セル番号'].value ws.cell(column=<列番号>, row=<行番号>).value |
以下が読み込みの実行例です。
1 2 3 4 5 6 7 8 9 |
>>> 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」に値を代入します。
1 2 3 4 5 6 |
import openpyxl wb = openpyxl.Workbook() ws = wb['sampleSheet'] ws['セル番号'].value ws.cell(column=<列番号>, row=<行番号>, value=<セル値>) |
以下が書き込みの実行例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
>>> 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 >>> |