FreeMarker: левый операнд: ожидается хеш, но это число равно (обертка: ftSimpleNumber) - PullRequest
0 голосов
/ 10 октября 2018

Я использую freemarker 2.3.28 и пытаюсь присвоить значение переменной, но я получаю ошибку в заголовке

<#list 0..row.getLastCellNum()-1 as cell>
        <#assign cellValue = cell.getStringCellValue()>
        <#assign cellAddress = cell.getAddress().toString()>
        <#if someCondition>                                         
            <td style='background-color:orange'>${cellValue}</td>
        <#else>
            <td>${cellValue}</td>
        </#if>
</#list>

Ошибка возникает во второй и третьей строках,Переменная row - это объект XSSFRow, который передается внутрь List, через который я итерирую, с внешним list (<#list rows as row>), который здесь не показан.

Почему это происходит и как я могу решить эту проблему?

Спасибо.

1 Ответ

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

Мне кажется, что <strong>cell</strong> никогда не присваивается реальному объекту ячейки.Ваша строка <#list 0..row.getLastCellNum()-1 as cell> просто собирается присвоить номер счетчика цикла переменной ячейки.Если вы измените его на это, с вами все будет в порядке?:

<#list 0..row.getLastCellNum()-1 as idx>
    <#assign cell = cell.getCell(idx)>
    <#assign cellValue = cell.getStringCellValue()>
    <#assign cellAddress = cell.getAddress().toString()>
    <#if someCondition>                                         
        <td style='background-color:orange'>${cellValue}</td>
    <#else>
        <td>${cellValue}</td>
    </#if>
</#list>

Я не увидел в POI javadoc ничего такого, что могло бы привести к получению всех ячеек из строки, иначе было бы проще.

...