メモ書き:openpyxl

インストール

pip install openpyxl

いつもの。

新しいエクセルワークブックを作る

import openpyxl
#新規作成
ewb = openpyxl.Workbook()
#保存
ewb.save("Atarashii.xlsx")
f:id:Amesiorine271108:20220323115846p:plain
上のコードで作ったAtarashii.xlsxの中身。何もない。

既存のワークブックを開く

#読み込み
ewb = openpyxl.load_workbook('test.xlsx')

なお、ここで開いているのはワークブック
まあもし記憶喪失になって調べたらワークブックとシートとセルと……って違いを書いておくれ。

シートを開く

2種類の開き方があるらしい。

sheet = ewb.active

↑(エクセルを保存した時点で)アクティブなシートを選択

sheet = ewb[ここにシートの名前文字列を入れる]

使いそうなやつ一覧

一応、気を付けているけど、間違ってたら直します
シート名:str
ewb:openpyxl.workbook.workbook.Workbook形式のオブジェクト?
sheet:openpyxl.worksheet.worksheet.Worksheet形式のオブジェクト?

ewb = openpyxl.Workbook()

ワークブック(openpyxl.workbook.workbook.Workbook)の新規作成。

ewb = openpyxl.load_workbook(filename)

filenameのExcelファイルの読み込み。(openpyxl.workbook.workbook.Workbook)

ワークブック(ewb)(type = openpyxl.workbook.workbook.Workbook)

for sheet in ewb:のようにfor文を回すとシートを順番に取得できるらしい。

ewb[シート名]

シート名で指定したシート。
指定したシートがない場合、

KeyError: 'Worksheet Sheet does not exist.'

になる

ewb.active

アクティブなシート(openpyxl.worksheet.worksheet.Worksheet)を返す

ewb.copy_worksheet(ewb[シート名])
ewb.create_sheet(シート名)

新しいシートをシート名で作成。同時にそのシート(openpyxl.worksheet.worksheet.Worksheet)を返す

ewb.index(sheet)

そのシートがワークブックの何番目のシートか返す

ewb.move_sheet(シート名, offset=n)

シートを右にn個移動

ewb.save(ファイル名)

ファイル名でワークブックを保存する

ewb.title

シートの名前を返す。ここに文字列を代入することでシート名を変えられる。

ワークシート(sheet)(type = openpyxl.worksheet.worksheet.Worksheet)

sheet.Worksheet[セル番号]

セル番号*1を指定する。同時にそのセル(openpyxl.cell.cell.Cell)を返す

sheet.iter_rows()

行ごとにfor文を回すならこれ使うみたい。
列の時はiter_colsを使うみたいだけどよく分かんないので必要なら探して。

セル(cell)(type = openpyxl.cell.cell.Cell)

cell = 文字列

そのセルに文字列を入れる

ewb = openpyxl.load_workbook('test.xlsx')
sheet = ewb["シート1"]
sheet['A1'] = 'Hello World'

こんな風にすると、シート1のセルA1にハローワールドできる。もっとも、これだけでは保存してないが。

cell.value

そのセルの値を返す


*1:"A1"みたいなやつ