Python モジュール: openpyxl
概要
- xlsx (Microsoft Excel のファイル形式) ファイルを扱うモジュール
データ構造
- Workbook: 複数のシートオブジェクトを含む xlsx 全体
- Worksheet: ワークシートオブジェクト
- Cell: セルオブジェクト
使い方
モジュールの読み込み
import openpyxl
ワークブックの操作
- 新規作成
wb = openpypxl.Workbook()
- 既存の xlsx ファイルの読み込み
wb = openpyxl.load_workbook(INPUT)
INPUT.xls
: 読み込む xlsx ファイルのパス
- 保存
wb.save(OUTPUT)
OUTPUT
: 保存先のパス
ワークシートの操作
- シートの新規作成
ws = wb.create_sheet("SHEET_NAME", POS)
ws
: ワークシートオブジェクト (ワークシートを操作する場合は、この変数に対して行う)SHEET_NAME
: シート名POS
: 挿入位置 (0 が先頭)(任意のオプションで、付けない場合は末尾にシートが追加される)
- ワークシートの選択
- 現在選択中のワークシート
ws = wb.active
ws
: ワークシートオブジェクトwb
: ワークブックオブジェクト
- ワークシート名で選択
wb["SHEET_NAME"]
- ワークシート名の変更
ws.title = "NAME"
ws
: ワークシートオブジェクト
- ワークシートの削除
wb.remove_sheet(ws)
wb
: ワークブックオブジェクトws
: ワークシートオブジェクト
- ワークシート名一覧
- オブジェクト一覧
wb.worksheets
- シート名一覧
wb.sheetnames
セルの操作
- セルの値の変更
ws.cell(row = I, column = J, value = V)
ws
: ワークシートオブジェクトI
: セルの行番号 (1 から始まる)J
: セルの列番号 (1 から始まる)V
: 代入する値
ws.cell(row = I, column = J).value = V
ws
: ワークシートオブジェクトI
: セルの行番号 (1 から始まる)J
: セルの列番号 (1 から始まる)V
: 代入する値
ws["POS"] = V
ws
: ワークシートオブジェクトPOS
: エクセルのセルの指定表記 (A1 や B2 など)V
: 代入する値
- 1 つのセルの読み込み
ws.cell(row = I, column = J).value
ws
: ワークシートオブジェクトI
: セルの行番号 (1 から始まる)J
: セルの列番号 (1 から始まる)
ws["POS"].value
ws
: ワークシートオブジェクトPOS
: エクセルのセルの指定表記 (A1 や B2 など)
- 複数のセルの読み込み
ws.iter_rows(min_row = MinR, max_row = MaxR, min_col = MinC, max_col = MaxC)
ws
: ワークシートオブジェクトMinR
: 最小の行番号 (1 から始まる)MaxR
: 最大の行番号 (1 から始まる)MinC
: 最小の列番号 (1 から始まる)MaxC
: 最大の列番号 (1 から始まる)- タプルに値が格納されたジェネレータが返される。
ws.values
ws
: ワークシートオブジェクト- すべてのセルオブジェクトがジェネレータが返される。
ws["POS:POS"]
ws
: ワークシートオブジェクトPOS:POS
: Excel の複数セルの表記 (A1:B2 → 2×2)- セルオブジェクトが格納された二次元タプルが返される。
ws.rows
ws
: ワークシートオブジェクト- セルオブジェクトが格納されたタプルが行単位のジェネレータで返される。
ws.columns
ws
: ワークシートオブジェクト- セルオブジェクトが格納されたタプルが列単位のジェネレータで返される。
- 例: すべてのセルを for で読み込む
for row in ws: for cell in row: print(cell.value)
ws
: ワークシートオブジェクト
- セルの表示形式を変更する (
cell
はセルオブジェクト)。- 標準
cell.number_format = openpyxl.styles.numbers.FORMAT_GENERAL
- 何も指定しない場合は、自動的にこのフォーマットになる。
- 数値
- 数値のデフォルト
cell.number_format = openpyxl.styles.numbers.FORMAT_NUMBER
- 桁数を指定
cell.number_format = "0.0_"
0_
、0.0_
、0.00_
のように桁数を指定する。
- コンマ区切り
cell.number_format = "#,##0.0_"
- 桁数指定の前に
#,##
を付ける。
- パーセント表示
cell.number_format = "0.0%"
- 数値の表記の後に
%
を付ける。