Я использую pandas для записи в файл excel следующим образом:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx')
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Masterfile.xlsx уже состоит из нескольких разных вкладок. Однако в нем еще нет «Main».
Pandas правильно пишет на "Основном" листе, но, к сожалению, удаляет и все остальные вкладки.
ExcelReader
Ответы:
В документации Pandas говорится, что он использует openpyxl для файлов xlsx. Быстрый просмотр кода
ExcelWriter
дает понять, что может получиться что-то вроде этого:источник
openpyxl
и предоставить достаточно подробностей: какие у вас формулы, как обновляются данные, как это мешает формулам. Теперь я просто не могу помочь, слишком многого не знаю.Вот вспомогательная функция:
ПРИМЕЧАНИЕ: для Pandas <0,21,0 заменить
sheet_name
наsheetname
!Примеры использования:
источник
С
openpyxl
версией2.4.0
иpandas
версией0.19.2
процесс, который придумал @ski, становится немного проще:источник
Начиная с pandas 0.24, вы можете упростить это с помощью
mode
аргумента ключевого словаExcelWriter
:источник
mode = 'a'
добавляет больше листов, но что, если я хочу перезаписать данные на существующих листах?Я знаю, что это более старый поток, но это первый элемент, который вы найдете при поиске, и приведенные выше решения не работают, если вам нужно сохранить диаграммы в книге, которую вы уже создали. В этом случае xlwings - лучший вариант - он позволяет вам писать в книгу Excel и сохраняет диаграммы / данные диаграмм.
простой пример:
источник
Старый вопрос, но я предполагаю, что некоторые люди все еще ищут это - так что ...
Мне этот метод нравится, потому что все листы загружаются в словарь пар имени листа и фрейма данных, созданный пандами с параметром Sheetname = None. Легко добавлять, удалять или изменять рабочие листы между чтением таблицы в формате dict и записью ее обратно из dict. Для меня xlsxwriter работает лучше, чем openpyxl для этой конкретной задачи с точки зрения скорости и формата.
Примечание: будущие версии pandas (0.21.0+) изменят параметр «имя листа» на «имя_ листа».
Например, в вопросе 2013 года:
источник
В pandas 0.24 есть лучшее решение:
перед:
после:
так что обновите свои панды сейчас:
источник
XslxWriter
опцией.engine=openpyxl
поскольку он просто добавит новый рабочий лист под названиемthe only worksheet1
Это работает отлично, только форматирование главного файла (файла, в который мы добавляем новый лист) теряется.
источник
Надежда "keep_date_col" поможет вам
источник
источник
Метод:
Использование:
источник