2016-04-12 2 views
2

Я использую pandas.ExcelWriter для добавления условного форматирования в электронную таблицу, которую im создает с помощью df.to_excel. Когда я жестко кодирую диапазон ячеек, как показано ниже, код работает нормально.XlsxWriter с ошибкой Pandas

worksheet.conditional_format('A3:N361386', {'type' : 'no_blanks', 'format' : worksheet_format}) 

Но когда я параметризую его, как показано ниже, я получаю сообщение об ошибке. Есть идеи?

Data_Range = "'" + 'A3:' + str(chr(len(THIS_proposals_data.columns)+96)).upper() + str(len(THIS_proposals_data.index)) + "'" 

worksheet.conditional_format(str(Data_Range), {'type' : 'no_blanks', 'format' : worksheet_format}) 

Сообщение об ошибке:

Traceback (most recent call last): 

    File "<ipython-input-9-25e65d1fb126>", line 1, in <module> 
    runfile('C:/Users/EHARTMAN/Desktop/untitled1.py', wdir='C:/Users/EHARTMAN/Desktop') 

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

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

    File "C:/Users/EHARTMAN/Desktop/untitled1.py", line 64, in <module> 
    worksheet.conditional_format(Data_Range, {'type' : 'no_blanks', 'format' : worksheet_format}) 

    File "C:\Anaconda3\envs\py27\lib\site-packages\xlsxwriter\worksheet.py", line 85, in cell_wrapper 
    row_1, col_1 = xl_cell_to_rowcol(cell_1) 

    File "C:\Anaconda3\envs\py27\lib\site-packages\xlsxwriter\utility.py", line 108, in xl_cell_to_rowcol 
    col_str = match.group(2) 

AttributeError: 'NoneType' object has no attribute 'group' 

ответ

2

Вам не нужно обернуть его в кавычки. Заменить:

Data_Range = "'" + 'A3:' + str(chr(len(THIS_proposals_data.columns)+96)).upper() + str(len(THIS_proposals_data.index)) + "'" 

с:

Data_Range = 'A3:' + str(chr(len(THIS_proposals_data.columns)+96)).upper() + str(len(THIS_proposals_data.index)) 
+0

Хорошо, в одну секунду я проверю его быстро. Спасибо. –

+0

Это сработало, спасибо! –

2

Вместо того, чтобы создать диапазон строк можно использовать диапазон строк Col как (first_row, first_col, last_row, last_col) см XlsxWriter conditional_format docs.

Например:

worksheet.conditional_format(0, 0, 4, 1, {...}) # Same as below. 
worksheet.conditional_format('A1:B5', {...}) 

Примечание, это общее правило, в XlsxWriter, что в любом месте вы можете использовать диапазон A1 вы можете использовать диапазон Row-Col, который легче настроить программно (см XlsxWriter: Working with Cell Notation) ,

Для мест, где требуется диапазон строк, например, в формулах, вы можете использовать XlsxWriter: Cell Utility Functions.

+0

удивительный, спасибо. – garg10may

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