FreeMarker:left-hand 操作数:需要一个散列,但这已计算为一个数字(包装器:f.t.SimpleNumber)
FreeMarker: left-hand operand: Expected a hash, but this has evaluated to a number (wrapper: 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
object,它在 List
内部传递,我正在使用此处未显示的外部 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 中没有看到任何公开从行中获取所有单元格的内容,否则会更简单。
我正在使用 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
object,它在 List
内部传递,我正在使用此处未显示的外部 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 中没有看到任何公开从行中获取所有单元格的内容,否则会更简单。