java - FreeMarker:左侧操作数:需要一个散列,但它已计算为一个数字(包装器:f.t.SimpleNumber)

标签 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>

错误发生在第二行和第三行。变量rowXSSFRowList 中传入的对象我正在使用外部 list (<#list rows as row>) 进行迭代这里没有显示。

为什么会发生这种情况以及如何解决这个问题?

谢谢。

最佳答案

在我看来<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 中没有看到任何公开从行中获取所有单元格的内容,否则会更简单。

关于java - FreeMarker:左侧操作数:需要一个散列,但它已计算为一个数字(包装器:f.t.SimpleNumber),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52740878/

相关文章:

Java - 从字符串类型转换为泛型类型

C# - String.Split() 删除最后一项

java - 尝试获取 ftl 模板时未找到文件异常

python 列表串联效率

python - 带有嵌套列表的列表理解中的条件语句(Python 3) :

javascript - 如何防止字段和按钮之间的 HTML 自动换行

validation - 将 Spring 3 MVC 注释验证与 Freemarker 结合使用

java - 使用 hibernate 创建插入操作,我收到以下错误?

java - 为什么struts 1.0将空字符串转换为0L?

java - 如何设置 Spring Security 以允许来自特定应用程序的 REST 调用?