見出し画像

【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")


以上が、シートについての操作になります。

良かったら参考にしてみてください。

最後まで読んでいただき、ありがとうございました!

この記事が気に入ったらサポートをしてみませんか?