该函数被多次调用。我保留一个计数,以便第一次呼叫时,创建一个工作簿。然后我使用pd.ExcelWrite()
写入该工作簿。下一次执行else:
并打开相同的工作簿。它的第一张纸被选中,最后一行被找到。 DataFrame写在该行上。 这是我的代码:如何将数据框追加到现有的Excel表单中?
def WriteFile (df):
if count1 == 1:
workbook = xlsxwriter.Workbook('pandas_simple.xlsx')
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=False)
workbook.close()
else:
book = open_workbook('pandas_simple.xlsx')
sheet_names = book.sheet_names()
sheet = book.sheet_by_name(sheet_names[0])
row = sheet.nrows
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=False, header=False, startrow = row)
我得到这个异常:
Exception Exception: Exception('Exception caught in workbook destructor. Explicit close()
may be required for workbook.',) in <bound method Workbook.__del__ of <xlsxwriter.workbook.Workbook
object at 0x000000000A143860>> ignored Exception
而且我pandas_simple.xlsx也是代码执行后是空的。我究竟做错了什么?
[如何写入现有的excel文件而不覆盖数据(使用熊猫)?](http://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file -without-overwrite-data-using-pandas) – Merlin
这个异常很可能是由于不通过'close()'或Pandas'save()'调用XlsxWriter工作簿析构函数造成的。该错误消息试图暗示这一点。它可能无法解决您的整体问题,但作为第一步,您应该添加'close()'或'save()'来解决异常。 – jmcnamara
此外,您不能使用XlsxWriter重写或附加到文件,您只会得到一个新文件。 – jmcnamara