#python #excel #pandas #error-handling #openpyxl
#python #excel #панды #обработка ошибок #openpyxl
Вопрос:
Я пытаюсь добавить данные dataframe в существующий файл xlsx.
Это мой код:
#Files' infos
filename = 'data.xlsx'
sheet_name = 'Sheet1'
if not os.path.isfile(filename):
df.to_excel(
filename,
sheet_name=sheet_name,
startrow=startrow if startrow is not None else 0,
**to_excel_kwargs)
writer = pd.ExcelWriter(filename, engine='openpyxl', mode='a')
# try to open an existing workbook
writer.book = load_workbook(filename)
# get the last row in the existing Excel sheet
# if it was not specified explicitly
if startrow is None and sheet_name in writer.book.sheetnames:
startrow = writer.book[sheet_name].max_row
# truncate sheet
if truncate_sheet and sheet_name in writer.book.sheetnames:
# index of [sheet_name] sheet
idx = writer.book.sheetnames.index(sheet_name)
# remove [sheet_name]
writer.book.remove(writer.book.worksheets[idx])
# create an empty sheet [sheet_name] using old index
writer.book.create_sheet(sheet_name, idx)
# copy existing sheets
writer.sheets = {ws.title:ws for ws in writer.book.worksheets}
if startrow is None:
startrow = 0
# write out the new sheet
df.to_excel(writer, sheet_name, startrow=startrow, **to_excel_kwargs)
# save the workbook
writer.save()
Я получаю эту ошибку, хотя: zipfile.BadZipFile: файл не является zip-файлом
Я попытался writer.save() и закрыть перед load_workbook, но я продолжаю получать ту же ошибку.
Ответ №1:
Я также решаю эту проблему с помощью того же кода, когда пытался установить пакеты pandas и openpyxl с версией pip3 по умолчанию.
Тем не менее, я попытался использовать conda для установки «pandas», «openpyxl», и это сработало.
Затем я переустановил ту же версию в pip3, и она работала и в pip3. Я думал, что версия пакета имеет значение.
Вот как я делаю
pip3 install pandas==1.1.1 openpyxl==3.0.5 jinja2