【完全独学Python】Excel操作(書き込み)はこれだけ覚えて!

Excel

この記事でわかること

  • セルへの書き込み方法がわかる!
  • 範囲に一撃で値を入れる方法がわかる!
  • コピペの方法がわかる!
  • 数式の書き込み方法がわかる!
ゆーや
ゆーや

openpyxlというモジュールを使っていくよ!

Excelへの値の書き込み

セルをアルファベット+数字で指定して書き込み(例:A1)

from openpyxl import Workbook

# 新しいワークブックを作成
wb = Workbook()

# デフォルトのシートを取得
ws = wb.active

# データを書き込む
ws["A1"] = "A1に値を入れる"

# Excelファイルを保存
wb.save("sample.xlsx")
ゆーや
ゆーや

Excelのセル指定といえばアルファベット+数字だよね!

ws[“B3”]のような指定ができるよ!

セルを数字で指定(行,列)

from openpyxl import Workbook

# 新しいワークブックを作成
wb = Workbook()

# デフォルトのシートを取得
ws = wb.active

# データを書き込む
ws.cell(row=1, column=1, value="(1, 1)")

# Excelファイルを保存
wb.save("sample.xlsx")
ゆーや
ゆーや

rowで何行目か、columnで何列目かを指定できるよ!

値はvalueで好きな値を設定してみよう!

範囲を指定して、文字を書き込む

from openpyxl import Workbook

# 新しいワークブックを作成
wb = Workbook()
ws = wb.active

# 範囲を指定して文字を書き込む
start_row = 1  # 開始行
end_row = 3    # 終了行
start_col = 1  # 開始列
end_col = 3    # 終了列
value = "Hello"

for row in range(start_row, end_row + 1):
    for col in range(start_col, end_col + 1):
        ws.cell(row=row, column=col, value=value)

# Excelファイルを保存
wb.save("sample.xlsx")
ゆーや
ゆーや

セルを数値で指定できることを利用すれば、

for文である範囲に値を書き込むことは簡単だね!

範囲を指定して、文字を書き込む(iter_rows文)

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# iter_rowsを使用して値を書き込む
for row in ws.iter_rows(min_row=3, max_row=10, min_col=2, max_col=5):
    for cell in row:
        cell.value = 'iter_rows'

wb.save('sample.xlsx')
ゆーや
ゆーや

iter_rowsでは、min_row(最小行数),max_row(最大行数),min_col(最小列数),max_col(最大列数)をしてすることで、範囲を指定できるよ!

リストを使って値を書き込む

from openpyxl import Workbook

# 新しいワークブックを作成
wb = Workbook()
ws = wb.active

# 行にデータを追加
ws.append(["Name", "Age", "City"])
ws.append(["Alice", 30, "New York"])
ws.append(["Bob", 25, "Los Angeles"])

# Excelファイルを保存
wb.save("sample.xlsx")
ゆーや
ゆーや

Worksheetオブジェクトのappendメソッドを使えば、

リストを上から順番に書き込むことができるよ!

Excelの関数を書き込む

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 数式を書き込む
ws['A1'] = 10
ws['A2'] = 20
ws['A3'] = 30
ws['A4'] = '=SUM(A1:A3)'

wb.save('sample.xlsx')
ゆーや
ゆーや

A4の値が「=SUM(A1:A3)」となっているし、Excelの表示上は

60」となっていて、計算が出来てる!

数式は特に意識せず、書き込めばいいんだね!

コピペで書き込む

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 値を書き込む
ws['A1'] = 'Original'
# コピー&ペースト
ws['B1'] = ws['A1'].value

wb.save('sample.xlsx')
ゆーや
ゆーや

セル.valueで値が取得できるので、あとはその値を他のセルに書き込むだけ!

条件付きで値を書き込む

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# データを書き込む
for row in range(1, 6):
    for col in range(1, 6):
        if row % 2 == 0:
            ws.cell(row=row, column=col, value='Even Row')

wb.save('sample.xlsx')
 
ゆーや
ゆーや

for文とif文をうまく組み合わせれば、自由にセルに値を詰めていくことができるよ!

複雑な要件はこれらを組み合わせよう!

コメント

タイトルとURLをコピーしました