【Python】Excelを操作してみる③
どうも、こまです。
今日もPythonによるExcel操作についての記事になります。
あと2回は続くかなあ〜
前回までのPython×Excel関連の記事はこちらです。
■ブック(ファイル)の読み込み・保存
■セルの値の読み書き
今回は、シートの操作について書いていきたいと思います。
シートの挿入
ブックの変数に create_sheet() をドットで繋げて実行します。
括弧の中に index=番号 を指定すると、シートを挿入する位置を指定できます。
# 位置を指定
ws_new = wb.create_sheet(index=番号)
# 先頭にシートを挿入
ws_new = wb.create_sheet(index=0)
# 末尾にシートを挿入
ws_new = wb.create_sheet()
シートの削除
ブックの変数に remove() をドットで繋げて実行します
wb.remove(削除するシート)
# シート名を指定してシートを削除
ws = wb[シート名]
wb.remove(ws)
# 0から始まる番号を指定してシートを削除
ws = wb.worksheets[番号]
wb.remove(ws)
シート名の変更
シート名を確認するには、シート名を代入した変数に「.title」をつけます。
シート名を変更するときは、その変数に新しい名前を代入するだけでOKです。
ws.title = "新しいシート名"
シートの移動・コピー
opnenpyxl では、他のブックにシートを移動したりコピーしたりできません
あくまでも同じブック内での作業に限られます
シートの移動・コピーには、ブックの変数に move_sheet() をドットで繋げて実行します。
括弧の中には、「移動するシート」と「いくつ移動するか(offset)」を指定します → offsetが 0 なら移動しない(マイナス値なら左に移動する)
ws = 移動するシート
wb.move_sheet(ws, offset=いくつ移動するか)
# 左に3つ移動する
wb.move_sheet(ws, offset=-3)
# シートの数がわからないとき → シートの総量から先頭への移動量を計算
to_top = 1 - len(wb.worksheets)
wb.move_sheet(ws, offset=to_top)
シートのコピーを作成するには、ブックの変数に copy_worksheet() をドットを繋げます。
括弧の中にシートを指定することで、そのコピーが末尾に追加されます。
コピーしたシート名には元の名前に「Copy」がつく
ws = コピーするシート
ws_copy = wb.copy_worksheet(ws)
■任意の位置にシートのコピーを挿入する場合
コピーを作成してから、シートの移動を行います。
import opnepyxl
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["4月売上"]
ws_copy = wb.copy_worksheet(ws)
ws_copy.title = "4月作業用"
# 末尾に作成されたシートのコピーを先頭に移動
wb.move_sheet(ws_copy, offset=-3)
wb.save("売上データ_作業用.xlsx")
■新しいブックにシートをコピーする場合
コピーしたいシートだけを残して、別名で保存します。
import openpyxl
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["4月売上"]
for ws in wb.worksheets:
# シート名が「4月売上」ではない場合は削除
if ws.title != "4月売上":
wb.remove(ws)
# 別名で保存すれば新しいブックを作成したことと同じ
wb.save("売上データ_4月のみ.xlsx")
以上が、シートについての操作になります。
良かったら参考にしてみてください。
最後まで読んでいただき、ありがとうございました!
この記事が気に入ったらサポートをしてみませんか?