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
我有一个受密码保护的 .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