openpyxlを使用してPythonでExcelファイルを操作する

みなさまおはこんばんにちは、せなです

今回はPythonでExcelを操作する方法について説明したいと思います

環境

Python3.8
Windows10

Pythonのインストールがまだの方は以下の記事を参考にどうぞ

リンク:Python3.8のインストール

はじめに

Python3でExcelを操作するには以下のいずれかのライブラリをインストールする必要があります
(ほかにもありますが、代表的な3つを紹介します)

xlrd:xls、xlsxファイルの読み込みに使える
xlwt:xlsファイルの書き込み・作成・保存に使える
openpyxl:xlsxファイルの読み込み・書き込み・作成・保存に使える

今回は最も使いやすい(と個人的に思う)openpyxlを使用して説明したいと思います

openpyxlのインストール

インストールはpipを使用して以下のコマンドでインストールできます

pip install openpyxl

Excelファイルの読み込み

openpyxlをインポートして「load_workbook(xlsxファイルディレクトリ)」とすることでxlsxの読み込みが行われ、Workbookオブジェクトを取得できます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')

Excelファイルの上書き保存(新規作成)

Workbookオブジェクト.save(xlsxファイルディレクトリ)」とすることで上書き保存することができます

また、指定したxlsxファイルが存在しない場合はファイルが新規作成されて保存されます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.save('c:\work\sample.xlsx')

wb.save('c:\work\new_sample.xlsx')  # 新規作成

Excelシート名の取得

Workbookオブジェクト.sheetnames」とすることでそのxlsx内のシート名をリスト形式で一括取得することができます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.sheetname

指定のシートのオブジェクトを取得したい場合は「Workbookオブジェクト.[シート名]」とすることでWorksheetオブジェクトが取得できます

Woeksheetオブジェクト.title」とすることでそのワークシート名を取得できます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb.[Sheet1]
ws.title

Excelの指定セルの取得

Worksheetオブジェクト.cell(row=行, column=列)」とすることで指定したセルのCellオブジェクトを取得できます
columnの1はA、2はB(以下etc…)に対応しています
row、columnのどちらも「0」を指定するとエラーになります

Cellオブジェクト.value」とすることでそのセルの値を取得できます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb.[Sheet1]
cell = ws.cell(row=1, column=1)
cell.value

Excelの指定セルへの書き込み

Worksheetオブジェクト[指定セル] = 値」とすることで指定セルに値を追加できます

または、「Worksheetオブジェクト.cell(row=行, column=列, value=値)」などでも追加することができます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb.[Sheet1]
ws['A1'] = 'Hello'
ws.cell(row=2, column=1, value='openpyxl')

以下のように「Worksheetオブジェクト.cell(row=5, column=1).coordinate」を使用すると「A5」などのセル番号を取得することができます

Worksheetオブジェクト.min_rowはワークシート内の最小行を取得することができ
max_columnは最大列を取得することができます
(もちろんmax_rowもmin_columnもあります)

ws[ws.cell(row=ws.min_row, column=ws.max_column + 1).coordinate] = 'Next'

Excelワークシートの操作

追加

Workbookオブジェクト.create_sheet(シート名)」とすることで新規シートを追加することができます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.create_sheet('AddSheet')

削除

Workbookオブジェクト.remove_sheet(Workbookオブジェクト[シート名])」とすると指定したシートを削除することができます

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.remove_sheet(wb['AddSheet'])

コピー

Workbookオブジェクト.copy_worksheet(Workbookオブジェクト[シート名])」とすることで指定したシートをコピーすることができます
そのさいにコピーされたシート名は後方に「Copy」が付きます(下の場合は「Sheet1 Copy」になる)

import openpyxl

wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.copy_worksheet(wb['Sheet1'])

最後に

ここまで読んで下さり、ありがとうございました

最近作っているプログラムでExcelへの出力とかしたかったので、個人的によく使用したのとか調べても欲しい情報とかが出なかったものを書いてます

今後も追記or新規記事で紹介するかもしれませんがその時はよろしくお願いします

ではでは~