S0-ma's Blog

s0-maのブログです。

Python+openpyxlでPythonからExcelファイルを作ってみた

Abstract

Pythonのopenpyxlというライブラリを使って、pythonからエクセルファイルの作成・編集を行ってみた。

Introduction

仕事ではPythonを使った測定自動化、データ解析を行っている。 次設計工程に伝える際には、これまではPythonで解析した結果をcsv形式にし、更にExcelファイルに貼り付けてレポート化していた。 しかし、データ種が増え解析後データがそこそこの分量になってくるとコピペが面倒だし、何より時間がかかるのが問題だった。

Pythonのopenpyxlというライブラリを使うとPythonからExcelファイルの読み書きができることを知ったので、試してみた。

Setup and Results

Install

pip install openpyxl

コード

新規ファイルの作成

from openpyxl import Workbook
wb = Workbook()
wb.save("sample1.xlsx")

既存ファイルの読み込み

from openpyxl import load_workbook
wb = load_workbook('test.xlsx')

先頭から行を追加

wb = Workbook()
ws = wb.active

headers = ["x", "y1", "y2"]
d =[[1, 2, 3], 
    [50, 60, 70],
    [35, 82, 11]]

ws.append(headers)
for row in d:
    ws.append(row)

Pandasのデータフレームを書き出す場合

wb = Workbook()
ws = wb.active
df = pd.DataFrame(d)
df.columns = headers

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

for cell in ws['A'] + ws[1]:
    cell.style = 'Pandas'

wb.save("pandas_openpyxl.xlsx")

ワークシートの追加・名前の編集

ws1 = wb.create_sheet("Mysheet")
ws2 = wb.create_sheet("Mysheet", 0) #新規シートの位置を指定

実行結果

cell styleとして'Pandas'を指定した場合には、自動で罫線がかかったファイルが出来上がった。 f:id:s0-ma:20190302200548j:plain

Conclusion

今までcsvに書き出していたデータが、Excel形式にするとシート単位でまとめられるので便利。 罫線は上記の通り、数式やグラフ作成まで対応しているようなのでいろいろと自動化が捗りそう。

Reference

openpyxl.readthedocs.io

github.com