前回の続き
諸事情により勉強会の日をずらす・・・人は来ないようだ・・・泣
セル名と行番号・列番号を相互変換
- セル名で指定したい場合や、行と列が分かってる場合などに変換ができるとよりエクセルが使いやすくなる。
- cellオブジェクトにrowやcolumnプロパティがあるので行と列番号は取得できる。
cell = sheet["C5"]
print(cell.row, cell.column) # 行と列番号が表示される
# 4 3
- 逆にcellのcoordinateプロパティを使えばセル名が取得できる。
cell = sheet.cell(2,3)
print(cell.coordinate) # セル名が表示される
# C2
データが何行まであるか分からない時
- GASではgetLastRow()で取得できた。
- 同様に
max_row
とmax_column
で取得できる。 - ただし、罫線などが入っている場合は有効範囲が罫線の最後までになってしまうので注意
(解決策としては取り出した後に切ないが空かどうかを判定する)
rows = sheet["A1":"G55"]
for row in rows:
values = [cell.value for cell in row]
if values[0] is None: break #セル未入力の場合はNoneになる
print(values)
-
iter_rows
でも取り出しが可能。さらにmin_row
やmax_row
で取り出す範囲の指定が可能。
for row in sheet.iter_rows(min_row = 3, max_row = 7):
values = [cell.value for cell in row]
if values[0] is None: break #3行目以降7行目までが取り出される
print(values)
シートの操作
-
create_sheet
で新規のシートを作成できる
sheet = book.create_sheet(title="シート名")
-
copy_worksheet
でシートをコピーできる
sheet = book.copy_worksheet(book["シート名"])
- シート名を変更する
sheet.title = "変更シート名"
- シートを削除する
book.remove(book["シート名"])
おまけ
エクセルを暗号化したり復号化したりすることも可能。
ライブラリのおかげでエクセルはかなり使えるようになっている。
次回はセルの装飾周りかなー