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%"
        • 数値の表記の後に % を付ける。