Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python openpyxlでエクセルファイルのセルを参照、更新する

www.whyit.work
では、セルの位置を"A1"のように指定して、値を書き込みましたが、cellメソッドでrow, columnの位置を指定してセルの値を参照、更新することができます。
f:id:zakiyamatakashi:20190613153951p:plain
というような、"test.exel"ファイルがあるとして、"A1"から"A5"までを参照し、"A6"から"A10"まで新たな値を追加するプログラムをかいてみます。

import openpyxl

book = openpyxl.load_workbook('test.xlsx')
sheet = book['work']
i = 1
while i < 6:
    print(sheet.cell(row=i, column=1).value)
    i += 1

while i < 11:
    sheet.cell(row=i, column=1).value = i
    print(sheet.cell(row=i, column=1).value)
    i += 1
book.save('test.xlsx')

これを実行すると以下のように出力され、

# python test.py
1
2
3
4
5
6
7
8
9
10

エクセルファイルは以下のように更新されます。
f:id:zakiyamatakashi:20190613155034p:plain
一行目の各列を更新するのであれば、columnの値を更新します。
また、rowもcolumnも1始まりであることに注意してください。
上記プログラムで、iの初期値に0を設定すると、以下のようなエラーが発生します。

ValueError: Row or column values must be at least 1

フォントやフォーマットについてはまた機会があれば記載します。
今日はここまで。