タイトル画像
琴葉葵

おねーちゃん!標準ライブラリでテキストデータを読み書きできるのは分かったんだけど、テキスト以外のファイルは同じようなこと出来るの?

琴葉茜

その拡張子(「.txt」「.jpg」のようなやつ)に対応した外部ライブラリを探せば可能だよ

琴葉茜

ひとまず、今回は学校でも使う機会が増えそうな表計算ソフト「Excel(エクセル)」を操作する「openpyxl」を紹介しようか!

解説画像1
琴葉葵

おおー
たまにエクセルでグラフを作ったり、データを管理するからちょうど良いかも!

琴葉茜

じゃあ次に、どんな感じでデータの読み書きができるか、プログラム例を見てみよう

解説画像1
琴葉葵

①指定したエクセルファイルを読み込む
②読み込みたいシートを指定する
③読み書きするセルを選択する
④セルの中身を取得して表示する
...って流れだね!

琴葉茜

セルの指定方法は
・6行目の「A1」みたいにエクセルのセル番号をそのまま入れる方法
・9行目の「行:1, 列:1」みたいに行列の番号を指定する方法
の2パターンがあるから覚えておくと良いよ!

琴葉葵

列を指定する場合は「A」を「1」として順番に数字で割り当てるんだね!

琴葉葵

だけど、1個ずつしかセルが指定できないとちょっと面倒くさくない??

琴葉茜

大丈夫!行ごとや列ごと、範囲指定でデータを取得したい場合の取得方法もあるよ!

解説画像1
琴葉葵

ちょっとややこしいけど、使えるようになったら便利そうだね!!

琴葉茜

あと、セルにデータを書き込む時に「"=sum(A1:A3)"」みたいにエクセルで扱う計算式を追加すると、エクセルを開いた時には計算処理されるよ

琴葉葵

ちゃんとエクセルとしての処理もしてくれるんだね!

琴葉茜

他にもグラフを挿入したり、セルのデザインの変更とかも出来るけどあまり使うことはないだろうし、ここでは基本的な使い方に留めておくね

構文説明
load_workbook(filename)
既存のExcelファイルを読み込む
wb = load_workbook("sample.xlsx")
Workbook()
新しいExcelファイルを作成
wb = Workbook()
wb.active
アクティブなシートを取得
ws = wb.active
wb.save(filename)
Excelファイルとして保存
wb.save("output.xlsx")
wb.sheetnames
すべてのシート名を取得
print(wb.sheetnames)
wb["シート名"]
指定した名前のシートを取得
ws = wb["Sheet1"]
ws["A1"]
特定セルの読み書き(範囲指定も可能:例 ws["A1:C3"]
ws["A1"] = "Hello"
ws.cell(row, column)
行・列でセル指定
ws.cell(1, 2).value = "Hi"
ws.iter_rows()
行単位でセルを順に取得(値のみの場合 values_only=True
for row in ws.iter_rows(values_only=True):
    print(row)
ws.iter_cols()
列単位でセルを順に取得(値のみの場合 values_only=True
for col in ws.iter_cols(values_only=True):
    print(col)
ws.append(list)
1行まとめてデータ追加
ws.append(["A", "B", "C"])
ws.title
シート名の取得・変更
ws.title = "成績表"
琴葉葵

これだけ知っていれば十分!!

琴葉茜

ちなみに最近、エクセルでPythonのプログラムを作成して動かす仕組みが追加されてるから、興味があれば見てみると良いよ!
MicroSoftの「Python in Excel」のページ