====== 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 -> 2x2)
* セルオブジェクトが格納された二次元タプルが返される。
* 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%"
* 数値の表記の後に ''%'' を付ける。
===== 参考サイト =====
* [[https://note.nkmk.me/python-openpyxl-usage/ | PythonでExcelファイル(xlsx)を読み書きするopenpyxlの使い方 | note.nkmk.me]]
* [[http://note.crohaco.net/2017/python-openpyxl-excel/ | [Python] openpyxl で Excel を操作してみた! - くろのて]]
* [[https://pg-chain.com/python-excel-format | Python Excelのセルにフォーマットを指定する | 鎖プログラム]]
{{tag>プログラミング}}