Функция вызывается несколько раз. Я сохранил счет, чтобы, если его вызвали в первый раз, создается книга. Затем я пишу в эту книгу, используя 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 без перезаписи данных (с помощью pandas)?] (Http://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file -without-overwriting-data-using-pandas) – Merlin
Исключение, скорее всего, вызвано не вызовом деструктора рабочей книги XlsxWriter через 'close()' или Pandas 'save()'. Сообщение об ошибке пытается намекнуть на это. Это может не решить вашу общую проблему, но в качестве первого шага вам следует добавить 'close()' или 'save()' для разрешения исключения. – jmcnamara
Кроме того, вы не можете переписать или добавить в файл с помощью XlsxWriter, вы просто получите новый файл. – jmcnamara