我正在使用基于POI的Jxls库来生成包含引用其他工作表的宏的电子表格。当公式引用空变量并显示“#VALUE”而不是空白时,我遇到了问题。
例如,使用Jxls变量正确填充“原始”工作表(称为工作表A)。例如,我把它放在工作表A中,单元格A2
${employee.salary}
以上是指集合,因此如果有10名员工,则生成的工作表A中将出现10行。请注意,集合的大小在模板方面是未知的,但我可以使用java类检索它,如果需要,可以生成电子表格。
在另一个工作表(称为workheetB)中,我根据工作表A的内容填充单元格。
例如,在工作表B中,我将使用以下公式填充20行A列:
$[worksheetA!A2]
正确计算前10行的worksheeB。但是,剩余的10行显示“#VALUE”,因为没有相应的员工(即只有10名员工)。
这是一种扭曲的解释,但基本上是指一个超出Jxls集合填充的单元格的公式返回“#VALUE”,我想摆脱它。
答案 0 :(得分:0)
您总是可以使用= IFERROR(a,b)修饰公式,其中a是原始公式(或值),如果a是#VALUE,则b是您要显示的内容
答案 1 :(得分:0)
问题是$ {employee.salary}在电子表格中扩展为多行,具体取决于集合中的项目数。 Excel认为这是一个插入,因此以前指向前10行的所有公式现在将指向第11行及以后。我希望它们保持指向1到10行(或1-n行),因此我的解决方法是将数据插入到公式所引用的不的工作表中,然后自动运行将这些工作表复制的宏到宏引用的那些工作表,从而避免插入。