pandas.ExcelWriter ValueError: Режим добавления не поддерживается xlsxwriter - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу добавить несколько записей в файл Excel и для этого использую pandas.ExcelWriter (http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.ExcelWriter.html?highlight=excelwriter#pandas.ExcelWriter):

import pandas as pd                                                     

df = pd.DataFrame(data={'a':[4], 'b':['corn'], 'c':[0.5]})              

with pd.ExcelWriter("test.xlsx", mode='a') as writer: 
            df.to_excel(writer) 

a, b, c - названия названий тестов.xlsx

запустите эту программу, увеличьте значениеОшибка:

ValueError                                Traceback (most recent call last)
<ipython-input-3-c643d22b4217> in <module>
----> 1 with pd.ExcelWriter("test.xlsx", mode='a') as writer:
      2     df.to_excel(writer)
      3 

~/anaconda/lib/python3.6/site-packages/pandas/io/excel.py in __init__(self, path, engine, date_format, datetime_format, mode, **engine_kwargs)
   1935 
   1936         if mode == 'a':
-> 1937             raise ValueError('Append mode is not supported with xlsxwriter!')
   1938 
   1939         super(_XlsxWriter, self).__init__(path, engine=engine,

ValueError: Append mode is not supported with xlsxwriter!

Не знаю почему?

Ответы [ 4 ]

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

Попробуйте с этим:

with pd.ExcelWriter("existing_file_name.xlsx", engine="openpyxl", mode="a") as writer:
    df.to_excel(writer, sheet_name="name", startrow=num, startcol=num)

Вы должны указать двигатель как "openpyxl".

0 голосов
/ 25 февраля 2019

Как говорится в трассировке, ValueError: Append mode is not supported with xlsxwriter!

Я не могу ответить на ваш вопрос, почему , это решение разработчиков Pandas.

Но ясмог заставить ваш сценарий использования работать с Pandas 0.24 и openpyxl:

df = pd.DataFrame(data={'a':[4], 'b':['corn'], 'c':[0.5]})              

with pd.ExcelWriter("test.xlsx", mode='a') as writer: 
            df.to_excel(writer) 
0 голосов
/ 15 апреля 2019

Попробуйте указать 'engine' как openpyxl:

with pd.ExcelWriter("test.xlsx", engine='openpyxl', mode='a') as writer:
    df.to_excel(writer)
0 голосов
/ 25 февраля 2019

гм, я почти уверен, что вы не можете использовать функцию добавления к существующему файлу xlsx с помощью xlsxwriter, потому что библиотека xlsxwriter предназначена только для записи файлов Excel

См. Проблему на Github

чтобы вы могли использовать openpyxl или лучше написать свою программу для выполнения этой функции ..

но если вы посмотрите на код внутри этого libray, он просто читает файл во временной среде перед тем, как записать финальный файл.файл, это ненастоящее приложение ...

...