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



我正在使用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 rows as row>)迭代的List内传入,此处未显示。

为什么会发生这种情况,我该如何解决这个问题?

谢谢。

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

最新更新