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

Python: Write Data to Columns in Protected .xlsm Excel File

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

我有办法将 pandas 中的数据写入此 .xlsm 文件的特定列吗?

我试过 xlwings,但更新 10k 行需要 15 分钟,即使 Application.ScreenUpdating = False。

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

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 文件,但我对全自动过程感兴趣, 如果可能的话。

谢谢!

您不得使用 xlwings 循环遍历单个单元格。如果您将数组直接分配给一个单元格,它将足够快,例如wb.sheets[0].range('A1').value = my_dataframe。参见:https://docs.xlwings.org/en/stable/datastructures.html