2015-03-25 3 views
1

Я использую pandas 0.15 и openpyxl 2.2.0 в качестве механизма записи, но та же проблема возникает и с pandas 0.16.Pandas - Экспорт заголовка и индекса данных в Excel вызывает TypeError

Мне нужно экспортировать файл данных pandas в файл .xlsx. Dataframe очень просто - что-то вроде:

col_A col_B col_C 
0  1 100 AB 
1  2 200 AC 
2  3 300 AD 

Я могу экспортировать содержимое dataframe (т.е. без индексных меток и имен столбцов):

df.to_excel(path_to_xlsx_file, sheet_name, header=False, index=False) 

Однако, если я включаю либо индексные метки или имена столбцов (или оба), я получаю TypeError. Это:

df.to_excel(path_to_xlsx_file, sheet_name, header=False, index=True) 

или это:

df.to_excel(path_to_xlsx_file, sheet_name, header=True, index=False) 

причины этого:

Traceback (most recent call last): 

    File "<ipython-input-11-a60810c2c9c2>", line 1, in <module> 
    runfile('F:/mine/python/pandas_tests.py', wdir='F:/mine/python') 

    File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 601, in runfile 
    execfile(filename, namespace) 

    File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 66, in execfile 
    exec(compile(scripttext, filename, 'exec'), glob, loc) 

    File "F:/mine/python/pandas_tests.py", line 25, in <module> 
    df.to_excel(path_to_xlsx_file, sheet_name, header=True, index=False) 

    File "C:\Python27\lib\site-packages\pandas\util\decorators.py", line 88, in wrapper 
    return func(*args, **kwargs) 

    File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 1260, in to_excel 
    startrow=startrow, startcol=startcol) 

    File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 705, in write_cells 
    xcell.style = xcell.style.copy(**style_kwargs) 

    File "C:\Python27\lib\site-packages\openpyxl-2.2.0-py2.7.egg\openpyxl\styles\styleable.py", line 107, in style 
    protection=self.protection 

    File "C:\Python27\lib\site-packages\openpyxl-2.2.0-py2.7.egg\openpyxl\styles\__init__.py", line 42, in __init__ 
    self._font = font 

    File "C:\Python27\lib\site-packages\openpyxl-2.2.0-py2.7.egg\openpyxl\descriptors\base.py", line 35, in __set__ 
    raise TypeError('expected ' + str(self.expected_type)) 

TypeError: expected <class 'openpyxl.styles.fonts.Font'> 

Я не могу использовать xlsxwriter как dataframe должны быть экспортированы в существующий файл.

+1

Невозможно воспроизвести. Прекрасно подходит для меня. Python 2.7.x и Pandas 0.16 –

+0

, какой пакет python вы используете? Я запускаю python (x, y) 2.7.9.0 на 64-разрядной машине Windows 7. Может ли проблема быть связана с OS или пакетом python, который я использую? – snowlion

+1

Возврат к предыдущей версии openpyxl (2.1.3) решил вопрос – snowlion

ответ

0

Решение заключается в использовании openysxl версии 2.1.3 или 2.1.5.

Смежные вопросы