我有一个使用Pandas的ExcelWriter函数,它负责将数组导出到Excel电子表格。这个函数过去几年一直运行正常,但现在出现了问题。
当函数执行到创建ExcelWriter实例的行:
with pd.ExcelWriter(excelpath) as exwriter
接着执行下一行:
format_link = exwriter.book.add_format()
之后,它会跳过中间的所有代码块,包括所有的条件语句、循环等,直接跳转到最后一条设置行颜色的语句:
worksheet.set_row(row, None, row_color)
我使用的开发环境是PyCharm 2023.3.2社区版,这是最新版本,Python解释器版本为3.9.13。
下面是该函数的内容:
def make_excel_array(...):
...
# 函数主体略
with pd.ExcelWriter(excelpath) as exwriter:
format_link = exwriter.book.add_format()
format_link.set_font_color('blue')
# 导出DataFrame至Excel及后续格式化操作被跳过
...
当我调用此函数并将参数值传入时:
array = [['abd', 1], ['def', 2]]
headers = ['letters', 'number']
excelpath = '/Users/jrfreeze/Documents/DS_Quarterly_Reports/PY4_Q1/'
filename = 'testsheet'
make_excel_array(array, headers, filename, path=excelpath)
正常情况下,这应该会按照给定的名字和路径将数组导出到Excel文件中。但现在,它跳过了主要代码段,并抛出了一个错误:
IndexError: At least one sheet must be visible
我还尝试注释掉了最后关于颜色设置的部分,但是结果相同,仍然是跳到了新的函数最后一行:
worksheet.set_column(i, i, max_lens[i])
我猜测这是因为跳过的这一行,即把DataFrame转换为Excel格式的行:
df.to_excel(exwriter, sheet_name=tab, index=False)
没有被执行,从而导致了错误的发生。但我现在还不清楚为何程序会跳过这些代码行。