openpyxl / xlwings

xlwingsopenpyxl
動作環境windows/macOSwindows/macOS/linux
サポートしているファイル形式全てExcel2010以降のxlsx/xlsm
python対応バージョンpython3.6python3.6
excelとの互換性対応していない計算式が存在する対応していない計算式を含むブックを読み込んで保存すると、その計算式が消える
excelマクロの呼び出しox
処理速度遅い速い

pip install xlwings

import xlwings as xw

book = xw.Book()

sheet = book.sheets.add(“MySheet”)

sheet.range(“A1”).value  [[1,2],[3,4],[5,6]]

xw.Save(“mybook.xlsx”)

xw.Close()

pip install openpyxl

import openpyxl

Excelファイルを開く

数式が入力されているセルからは「数式」が取得されるので、

計算結果が必要な場合はdata_only=Trueを指定する

wb = openpyxl.load_workbook(‘/Users/Desktop/xxx.xlsx’, data_only=True)

シートの取得

sheet = wb[‘sheet1’]

もしくはsheet = wb.worksheets[0]

シートをコピー(コピーしたシートは末尾にCopyがつく)

copy = wb.copy_worksheet(sheet)

シートの削除

wb.remove(copy)

値を書き込む

sheet.cell(1,1).value = 0

値を読み込む

value = sheet.cell(1,1).value

セルの書式設定

sheet.cell(1,1).number_format = ‘0.00’

もしくはws[‘A2’].number_format = ‘yyyy年mm月dd日’

フォントの設定

from openpyxl.styles import Font

sheet.cell(1,1).font = Font(bold=True, italic=True)

ブックを保存

wb.save(‘./xxx.xlsx’)

ブックを閉じる

wb.close()

最終行を取得する

row = 1

while sheet.cell(row,1).value is not None:

row += 1

lastrow = row

繰り返し(1シートずつ)

for ws in wb:

print(ws.title)

繰り返し(1行ずつ)

for row in wb[‘sheet1’].rows: