Моя программа генерирует data_list с помощью цикла while (код для создания data_list не важен, основной код я приложил ниже). В конце цикла, после создания data_list, я хочу записать этот data_list в файл test.xlsx. Однако каждый новый data_list должен сохраняться в новой вкладке (то есть, если бы у меня было 10 итераций в цикле, в файле test.xlsx было бы 10 разных вкладок).
На данный момент мой код работает так, что каждая новая вкладка перезаписывает предыдущую, то есть в конце цикла в файле test.xlsx остается одна вкладка.
Подскажите, как сделать так, чтобы каждый новый сгенерированный data_list писался в новой вкладке.
start=0
finish=1
datas = response.json()
while finish < 11:
data = datas[start:finish]
data_list = []
# some code for generating the data_list
df = pd.DataFrame(data_list)
writer = pd.ExcelWriter('test.xlsx')
df.to_excel(writer, sheet_name=f'{finish}', index=False)
writer._save()
finish +=1
start +=1
Да, writer = pd.ExcelWriter('test.xlsx')
каждый раз будет создавать новый «test.xlsx», так что перезаписывается не вкладка, а вся книга на каждой итерации.
Еще один очень простой способ исправить это, не меняя никакого кода: удалить xlsxwriter. тогда pandas будет использовать openpyxl в качестве движка, который будет использовать существующий файл Excel вместо того, чтобы создавать новый файл и перезаписывать старый с тем же именем.
Вместо сохранения каждого листа используйте with
, чтобы создать ExcelWriter
.
with pd.ExcelWriter('test.xlsx') as writer:
while finish < 11:
data = datas[start:finish]
data_list = []
df = pd.DataFrame(data_list)
df.to_excel(writer, sheet_name=f'{finish}', index=False)
finish += 1
start += 1
Я перемещаю
writer = pd.ExcelWriter('test.xlsx')
перед петлейwhile
. затем переместитеwriter.close()
после циклаwhile
, я увидел 10 вкладок, сохраненных в «test.xlsx» после запуска кода....