2015-05-15 3 views
0

Я пытаюсь создать книгу Excel с двумя рабочими листами - я использовал xlsxwriter для ввода данных на первом листе, а затем ранжировал эти данные на втором листе. Когда я открываю книгу, у рангов есть имя Excel? ошибка. Если я нажимаю на конец формулы на панели редактирования, он вычисляет правильно, поэтому я не думаю, что формула неверна. Я подозреваю, что это может быть какой-то порядок операций? Мой лист excel настроен на автоматическое вычисление формул ... единственная аналогичная проблема, которую я мог найти в Интернете, - xlsxwriter: add formula with other sheet in it, но я не могу сказать, что это за решение (если оно действительно оказалось чем-то иным, чем проблема с французского языка) Вот упрощенная версия моего кодаОшибка имени формулы Python xlsxWriter

import xlsxwriter 
wb = xlsxwriter.Workbook('C:\Python33\ScoreTry.xlsx') 
ws1 = wb.add_worksheet('RawScores') 
ws2 = wb.add_worksheet('RankScores') 
ws1.write(0,0,32) 
ws1.write(1,0,39) 
ws1.write(2,0,15) 
for i in range (0,3): 
    x = 'IF(isblank(RawScores!A'+str(i+1)+'),"",RANK.AVG(RawScores!A'+str(i+1)+',RawScores!A$1:A$100,0))' 
    ws2.write_formula(i,0,x) 
wb.close() 

мои RankScores лист opesn с тремя #NAME? ошибки вместо рангов, пока я не нажму на каждый из них. Любые идеи очень ценятся!

ответ

0

RANK.AVG() - это функция, которая была добавлена ​​как «расширение» после спецификации формата файла XLSX. Существует список этих функций, определенных в Microsoft documentation.

Итак, хотя формула отображается как RANK.AVG(), она сохраняется в файле как _xlfn.RANK.AVG() (как указано в предыдущем документе).

Если вы изменили формулу, чтобы использовать префиксную версию функции, она должна работать.

Это kludgy, но в настоящее время неизбежное обходное решение (без какого-либо одинаково обходного пути в модуле). Для чего это необходимо, это задокументировано в разделе write_formula() документов.

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