首页 > 解决方案 > 从 openpyxl 到 xlwings

问题描述

我的任务:使用宏在已经存在的 Excel 电子表格中自动执行一些计算。

问题:我使用 openpyxl 这样做只是为了后来意识到一旦保存新文件就不会保留宏(如果将新文件保存为 xlsm 它会损坏,如果将其保存为 xlsx - 不会保留宏)。我在网上尝试了一些建议的解决方案(都没有奏效),以挽救一个运行良好的 xlsm。

我想我可能应该在 xlwings 中进行数据操作,这应该会保留宏。但是,我一直在努力使我的 openpyxl 代码适应 xlwings:

#Z-scores

df_excel=pd.read_excel("zz3.xlsm", engine="openpyxl")

df_name=df_excel[["Name"]]

df_excel=pd.read_excel("zz3.xlsm", engine="openpyxl", index_col=None, usecols="GN:IV")

df_zscore=(df_excel-df_excel.mean())/df_excel.std()

df55=pd.DataFrame()
df55=df_zscore.copy()
df55["Name"]=df_name.copy()

cols=list(df55.columns)
cols=[cols[-1]]+cols[:-1]
df55=df55[cols]
print(df55)

writer=pd.ExcelWriter("zz3.xlsx", engine="openpyxl")
df55.to_excel(writer, sheet_name="Skew scores", index=False)
writer.save()

#12-month moving averages 

df_excel=pd.read_excel("zscores.xlsm", engine="openpyxl")
df_ma12=df_excel.rolling(12).mean()
print(df_ma12)```

标签: pythonexcelpandasopenpyxlxlwings

解决方案


推荐阅读