====== 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>プログラミング}}