FreeMarker:左侧操作数:预期为哈希,但已计算为数字(包装器:f.t.SimpleNumber)

时间:2018-10-10 13:00:56

标签: java list freemarker xssf

我正在使用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 :(得分:0)

在我看来cell从未分配给实际的单元格对象。您的<#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中没有看到任何暴露从该行获取所有单元格的东西,否则会更简单。