おねーちゃん!標準ライブラリでテキストデータを読み書きできるのは分かったんだけど、テキスト以外のファイルは同じようなこと出来るの?
その拡張子(「.txt」「.jpg」のようなやつ)に対応した外部ライブラリを探せば可能だよ
ひとまず、今回は学校でも使う機会が増えそうな表計算ソフト「Excel(エクセル)」を操作する「openpyxl」を紹介しようか!
おおー
たまにエクセルでグラフを作ったり、データを管理するからちょうど良いかも!
じゃあ次に、どんな感じでデータの読み書きができるか、プログラム例を見てみよう
①指定したエクセルファイルを読み込む
②読み込みたいシートを指定する
③読み書きするセルを選択する
④セルの中身を取得して表示する
...って流れだね!
セルの指定方法は
・6行目の「A1」みたいにエクセルのセル番号をそのまま入れる方法
・9行目の「行:1, 列:1」みたいに行列の番号を指定する方法
の2パターンがあるから覚えておくと良いよ!
列を指定する場合は「A」を「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): |
ws.iter_cols() | 列単位でセルを順に取得(値のみの場合 values_only=True) | for col in ws.iter_cols(values_only=True): |
ws.append(list) | 1行まとめてデータ追加 | ws.append(["A", "B", "C"]) |
ws.title | シート名の取得・変更 | ws.title = "成績表" |
これだけ知っていれば十分!!
ちなみに最近、エクセルでPythonのプログラムを作成して動かす仕組みが追加されてるから、興味があれば見てみると良いよ!
MicroSoftの「Python in Excel」のページ
