Python Excelファイルの操作

openpyxl インストール

pip install openpyxl

ワークシート

サンプル

ワークブックを開く

import openpyxl

wb = openpyxl.load_workbook("sample1.xlsx")

# 数式の結果がほしい場合
# wb = openpyxl.load_workbook("sample1.xlsx", data_only=True)


# シート名の表示
print(wb.sheetnames)

ワークシート取得

# ワークシート名で取得
sheet = wb["商品"]

# 最初のワークシート
sheet = wb.worksheets[0]

# ワークシート名表示
print(sheet.title)

セルの操作

sheet["セル番号"]でcellオブジェクトを取得。そのvalueプロパティで値を取得。

# A2セルの表示
val = sheet["A2"].value
print(val)

またはsheetのcell(行,列)でセルを取得。valueで値を取得。

# A2セルの表示
val = sheet.cell(2,1).value
print(val)

書き換えも可能

# A2セルの表示
sheet.cell(2,1).value = 200

# 保存
wb.save("sample2.xlsx")

行の取得

# 行番号で取得(1~)
row = sheet[1]

# セルは0~
print(row[0].value)

# セルを順次処理
for c in row:
    print(c.value)

行の順次処理

# 全行(内容がある行のみ)
for row in sheet.rows:
    print(row[0].value,row[1].value)

# 2行目から
for row in sheet.iter_rows(min_row=2):
    print(row[0].value) # A列
    print(row[1].value) # B列

セルをまとめて処理

for row in sheet.rows:
    for cell in row:
        print(cell.value)

ワークシートの操作

ワークシート作成

import openpyxl

wb = openpyxl.load_workbook("sample1.xlsx")

# シートの追加
sheet = wb.create_sheet(title="シート名") 

# シートの場所を指定して追加
sheet2 = wb.create_sheet(title="シート名2", index=0) 

# シート名の表示
print(wb.sheetnames)

シート名変更

# シート名変更
sheet = wb["シート名"]
sheet.title = "新シート名"

シートの順番入れ替え

# シート名変更
sheet.move_sheet("シート名",offser=1)
offsetの値がプラスなら右へ、マイナスなら左へ。

シートのコピー

wb = openpyxl.load_workbook("sample1.xlsx")
sheet = wb.copy_worksheet(wb["シート名"])
sheet.title = "新シート名"