Python:将数据写入受保护的.xlsm Excel文件

时间:2018-12-05 15:30:10

标签: python excel pandas xlwings xlsm

我有一个受密码保护的.xlsm文件,其中某些列和宏中包含公式。

我是否可以将熊猫中的数据写入此.xlsm文件中的特定列?

我尝试了xlwings,但是即使使用Application.ScreenUpdating = False,也要花费15分钟来更新1万行。

当前我正在使用如下所示的函数:

import xlwings as xw

def enter_data(path, sheetname, start_column, df):
wb = xw.Book(path)
ws = wb.sheets[sheetname]

for i in range(len(df.columns)):
    column = chr(ord(start_column)+i)

    for index, row in df.iterrows():
        cell = column.upper() + str(index + 3)
        ws.range(cell).value = row[i]

wb.save(path)
wb.close()

我知道一种变通方法,其中将pandas数据框保存到csv,然后将csv复制粘贴到受密码保护的.xlsm文件中,但是,如果可能的话,我对全自动过程感兴趣。

谢谢!

1 个答案:

答案 0 :(得分:0)

您不得通过xlwings遍历单个单元格。如果您直接将阵列分配给单元格,它将足够快,例如wb.sheets[0].range('A1').value = my_dataframe。请参阅:https://docs.xlwings.org/en/stable/datastructures.html