openpyxl入門

Pocket

Pythonのライブラリopenpyxlの基本的なところをまとめておきます。


目次


インストール

Macでpipを使えるならば次のとおりです。

$ pip install openpyxl

新規作成

Excelファイル(ワークブック)を新たに作ります。
ExcelがインストールされていなくてもOKです。

import openpyxl
wb = openpyxl.Workbook()
wb.save("new.xlsx")

セルに値を入れる

一つのセルに値を入れる方法です。
下はA1セルに9999をセットしています。

import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
cell = ws["A1"]
cell.value = 9999
wb.save("new.xlsx")

複数のセルに一括して値を入れる方法です。
cells=[1行目,2行目,3行目]という二次元のリスト(配列)を準備します。
start_rowとstart_colに先頭行と先頭列の値をセットします。
PythonでExcelファイル(xlsx)を読み書きするopenpyxlの使い方 | note.nkmk.meのとおりです。ありがとうございました。

def set_cells(worksheet, cells, start_row, start_col):
  for y, row in enumerate(cells):
    for x, cell in enumerate(row):
      worksheet.cell(row=start_row + y, column=start_col + x, value=cells[y][x])

import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
cells = [["a", "b", "c"], [1, 2, 3], [10, 11, 12]]
set_cells(ws, cells, 1, 1)
wb.save("new.xlsx")

セルの値を取得する

一つのセルの値を取得する方法です。

import openpyxl
book_name = "new.xlsx"
sheet_name = "Sheet"
wb = openpyxl.load_workbook(book_name)
ws = wb[sheet_name]
print(ws["A1"].value)
# a

複数のセルの値を一括して取得する方法です。
見出しがある場合を想定して辞書型のリストにします。

def get_recs(book_name, sheet_name):
  wb = openpyxl.load_workbook(book_name)
  ws = wb[sheet_name]
  values = [[cell.value for cell in row] for row in ws]
  recs = []
  for y, row in enumerate(values):
    rec = {}
    if y == 0:
      heads = row
    else:
      for x, cell in enumerate(row):
        head = heads[x]
        rec[head] = values[y][x]
      recs.append(rec)
  return recs

import openpyxl
book_name = "new.xlsx"
sheet_name = "Sheet"
recs = get_recs(book_name, sheet_name)
print(recs)
# [{'a': 1, 'b': 2, 'c': 3}, {'a': 10, 'b': 11, 'c': 12}]

その他

行の挿入

行を挿入するときは
insert_rows(行番号)
とします。
行番号は1から始まります。
リストを使って処理するときは0から始まるので注意してください。
次のサンプルはsample.xlsxのSheetシートの3行目に行を挿入してnew.xlsxとして保存します。

import openpyxl
book_name = "sample.xlsx"
sheet_name = "Sheet"
wb = openpyxl.load_workbook(book_name)
ws = wb[sheet_name]
ws.insert_rows(3)
wb.save("new.xlsx")

[ 2021年7月14日 | カテゴリー: Python | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報