在Python 裏用 xlwings 操控 Excel spreadsheet

來源: 2023-02-05 21:36:28 [博客] [舊帖] [給我悄悄話] 本文已被閱讀:

目前在各種非計算機科學的數據應用行業,python 語言似乎成了首選。我經常遇到的問題是數據處理是用Python,最後一步各種報表要用到從前積累各類的Excel spreadsheets。

公司人員流動比較多,前麵員工留下的半吊子 Excel spreadsheets,有些有公式(formula),有些有 VBA module,難以快速消化。我摸索了一下,發現用 Python module xlwings 能比較快速的操控 Excel,在不改變原spreadsheet 結構下完成各項任務。這些半吊子的 spreadsheet 是雜七雜八不會編程的人寫的,不容易在上麵做改動,有時間的話還得重寫。

xlwings的官網:https://docs.xlwings.org/en/stable/index.html

Xlwings 最簡單的應用是打開一個 spreadsheet,在上麵做些事,然後存放這個spreadsheet:

import xlwings as xw
app = xw.App(visible=True, add_book=False)
wb = app.books.add() # open new workbook
ws = wb.sheets['Sheet1'] # worksheet
ws['A1'].value = 'Hello, world!' # do something
folder = 'C:/Users/John Doe/Documents/'
file_name = 'my_new_spreadsheet.xlsx'
wb.save(folder + file_name)
wb.close()
app.quit()

你還可以執行spreadsheet中原來寫好的VBA macro, 比如

import xlwings as xw
app = xw.App(visible=True, add_book=False)
folder = 'C:/Users/John Doe/Documents/'
file_name = 'my_vba.xlsm'
wb = app.books.open() # open new workbook

macro = wb_pvt_tmp.macro('my_module.my_macro')
macro() # run some VBA macro

wb.save(folder + file_name)
wb.close()
app.quit()