日付:2021/09/17
分類:Python
openpyxlの使い方をよく忘れるので、チートシートにしました
(以下wb:ワークブック、sh:ワークシート)
#インポート
import openpyxl
#ファイルを開く 読み込み
wb = openpyxl.load_workbook(r'xxx.xlsx')
#シートを開く
sh = wb.worksheets[0] #シート番号
sh = wb["Sheet1"] #シート名指定
sh = wb.active #アクティブシート(保存したときトップ)
#シートのコピー
sh2 = wb.copy_worksheet(sh)
#書き込む
wb.save(r'xxx.xlsx')
wbを開くとメモリ上に展開されるので、データを作成、修正したものを書き込んでいきます。ただし、ここまでだとデータはまだメモリ上にあるので、最後にwb.save()でファイルに保存するというイメージになります。
#最大行数
R = sh.max_row #最終行
#最大列数
C = sh.max_column #最終列
#セル読み込み
x = sh.cell(row=gyo, column=retsu).value #1セルずつ
ar = sh["B2:F5"] #2次元配列にまとめて読める
#セル書き込み
sh.cell(row = gyo, column = retsu, value = x)
セル書き込みと言っても、この段階ではデータはメモリ上にあるので、最後にファイルに保存が必要です。
#行削除
sh.delete_rows(gyo)
#列削除
sh.delete_cols(retsu)
#行挿入
sh.insert_rows(2, 1)
#列挿入
sh.insert_cols(2, 1)
#複数のファイルに保存するときは
以下wb:ワークブック、sh:ワークシート
①wbを開く(読み込みでもOK)
②wbからshを開く
③メモリ上で作成、修正
④wbをxxx.xlsxとしてファイルに保存
⑤wbをyyy.xlsxとしてファイルに保存
#複数のシートとして保存するときは
①wbを開く(読み込みでもOK)
②wbからwsを開き、メモリ上で作成、修正
③wsをws2などとしてコピー(メモリ上)
④wbをxxx.xlsxとしてファイルに保存
##サンプルプログラム
たとえば、以下のようなデータあるとします
(ファイル名"Book1.xlsx"、シート名"Sheet1")
2行2列のセル(B2セル)のデータを読み取って表示するサンプルです
import openpyxl
wb = openpyxl.load_workbook(r'Book1.xlsx')
sh = wb["Sheet1"] #シート名指定
x = sh.cell(row=2, column=2).value
print(x)
この例だと「山田」と表示されます
replitで試す
#セルの連結(セルの結合)
import openpyxl
def merge():
wb = openpyxl.load_workbook(r'Book1.xlsx')
sh = wb["Sheet1"] #シート名指定
# セルの結合
sh.merge_cells("A2:A4")
sh["A2"] = "merged"
# 任意の名称で保存
wb.save('test.xlsx')