Python プログラミング

[Python] OpenPyXLでExcel(xlsx)を操作する [超初心者向け]

2018年8月30日

こんにちは!シミダイ(@shimidai2100)です。

PythonでExcel(xlsx)ファイルを操作するためのOpenPyXLについて紹介します。

XlsxWriterpython-excelなどPythonでExcelファイルを操作する方法は多くありますが、OpenPyXLがナレッジが多く使いやすいのでオススメです。

今回はOpenPyXLのインストールから基本的な使い方について紹介します。

細かい使用方法をマニュアルを参照ください。


OpenPyXLのインストール

OpnePyXLをインストールするには「pip」を使用します。

pip install openpyxl

またPycharmでOpenPyXLをインストールする方法は以下にまとめてありますので参考にします。

PyCharmにライブラリをインストール・アップデートする手順

こんにちは!シミダイ(@shimidai2100)です。 PyCharmで追加のライブラリを「Python Packag ...

続きを見る

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

 

関連記事

-Python, プログラミング

Copyright© shimidai2100 , 2020 All Rights Reserved.