目前在各种非计算机科学的数据应用行业,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()