在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()