PythonでExcelを操作するためのライブラリとして、xlwings
とopenpyxl
がよく使われます。これらのライブラリはそれぞれ異なる特性と利点を持っています。
xlwingsとopenpyxlの違い
xlwings
は、本家Excelをプロセス間通信で制御するライブラリで、COMアーキテクチャが使われています。一方、openpyxl
はExcelとの互換性に難ありますが、カバーできる環境が広く、Linuxサーバでも動作します。
以下に、xlwings
とopenpyxl
の主な違いを示します。
項目 | openpyxl | xlwings |
---|---|---|
動作環境 | Linux / MacOS / Windows | Windows |
Excel | 不要 | 必要 |
サポートしているファイル形式 | Excel 2010 の xlsx/xlsm/xltx/xltm | Excelがサポートする形式全て |
処理速度 | 〇 | × |
openpyxlとxlwingsの使用例
以下に、openpyxl
とxlwings
を使用したPythonコードの例を示します。
# openpyxlの例
import openpyxl as px
# ブックを開く
wb = px.load_workbook('book.xlsx', data_only=True)
ws = wb['Sheet1']
# 使用範囲の値(tuple)を取得して出力
print(tuple(ws.values))
# セルを行毎に得て値を出力
for row in ws.rows:
print([c.value for c in row])
# ブックを閉じる
wb.close()
# xlwingsの例
import xlwings as xw
# 新規Excelインスタンスでブックを開く
app = xw.App()
wb = app.books.open('book.xlsx')
ws = wb.sheets[0]
now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for row in range(10000):
ws.cells(row+1, 1).value = now_time
# 保存
wb.save('.\\\\xlwings.xlsx')
# プロセスを削除
wb.close()
これらのライブラリを選択する際は、自分の要件と環境に最も適したものを選ぶことが重要です。