Панды пишут в лист Excel, удаляя другие листы в файле - PullRequest
0 голосов
/ 18 октября 2018

У меня есть простой код для экспорта кадра данных Python в существующий файл Excel с листами, но автор продолжает удалять существующий лист из файла

read = pd.ExcelFile('Saw_Load.xlsx')
print(read.sheet_names)
writer = pd.ExcelWriter('Saw_Load.xlsx')
result.to_excel(writer,'saw', index = False)
read2 = pd.ExcelFile('Saw_Load.xlsx')
print(read2.sheet_names)
writer.save()

Вот вывод, который я получаю

['saw', 'Pivot']
['saw']

Мы можем ясно видеть, что до использования функции to_excel было 2 листа (saw, Pivot).После того, как есть только одна «пила»

Это может быть простым исправлением в формуле, но не может найти ничего, что работает.Любая помощь будет оценена

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Ваша проблема в том, что вы больше не пишете старую sheets, которая содержится в книге.Допустим, вам нужно снова написать его с нуля, но не выполнять снова to_excel, а просто указать рабочую книгу.

Это происходит, потому что xlsxwriter создает новый файл, поэтому старый - стер .

Вы можете сделать это, используя writer.book и writer.sheets объекты.

excelBook = load_workbook(filename)
with pd.ExcelWriter(filename, engine='xlsxwriter') as writer:
    # Save your file workbook as base
    writer.book = excelBook
    writer.sheets = dict((ws.title, ws) for ws in excelBook.worksheets)

    # Now here add your new sheets
    result.to_excel(writer,'saw', index = False)

    # Save the file
    writer.save()

Примечание: обратите внимание, что я использовал load_workbook из openpyxl, но вы можете использовать Excelfile без него и воспроизводить его с небольшими изменениями.

0 голосов
/ 18 октября 2018

Попробуйте (хотя я не уверен, откуда взялась result):

read = pd.ExcelFile('Saw_Load.xlsx')
print(read.sheet_names)
_writer = pd.ExcelWriter('Saw_Load.xlsx')
result.to_excel(_writer,'saw', index = False)

Идея отсюда :

При прохождениисуществующий объект ExcelWriter, тогда лист будет добавлен в существующую книгу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...