Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入列表为空时删除JXLS中的模板行_Java_Excel_Apache Poi - Fatal编程技术网

Java 输入列表为空时删除JXLS中的模板行

Java 输入列表为空时删除JXLS中的模板行,java,excel,apache-poi,Java,Excel,Apache Poi,我正在使用JXLS填充模板excel电子表格。有时,一个输入(列表)是空的。发生这种情况时,使用此列表的模板字段将显示在完整JXLS regalia中填充的电子表格中-例如,“${someList.someValue}” 有问题的字段都在一行中(通过JXLS扩展为list.size()rows)。当列表中没有记录时,我想清除整行 在JXLS中有这样做的方法吗?或者,有人能推荐一种使用JExcel或POI的补充方法吗?我认为这可以通过POI实现,甚至可以通过JXLS的POI对象接口实现: 发件人:

我正在使用JXLS填充模板excel电子表格。有时,一个输入(列表)是空的。发生这种情况时,使用此列表的模板字段将显示在完整JXLS regalia中填充的电子表格中-例如,“
${someList.someValue}

有问题的字段都在一行中(通过JXLS扩展为
list.size()
rows)。当列表中没有记录时,我想清除整行


在JXLS中有这样做的方法吗?或者,有人能推荐一种使用JExcel或POI的补充方法吗?

我认为这可以通过POI实现,甚至可以通过JXLS的POI对象接口实现:

发件人:
修改已读入的文件很简单。通过评估器方法检索对象,通过父对象的移除方法(sheet.removeRow(hssfrow))移除对象,并像创建新xls一样创建对象。修改完单元格后,只需调用workbook.write(outputstream),就像上面所做的那样

发件人:
使用“行对象”可以访问相关的POI对象,以便在需要时修改单元样式

您可以在excel模板中使用标记。 例如,如果您有一个类似于以下内容的模板

Row 1: <jx:if test="${!empty someData}">
Row 2: place holders for data that will be printed in the loop 
Row 3: </jx:if>
第1行:
第2行:将在循环中打印的数据的占位符
第3行:
如果someData不为空,则输出中将打印行,但如果someData为空,则此模板不会打印行


我希望我能说清楚。有关标记的更多信息,请参阅

根据jx:if条件,行不显示的另一个原因是jx:if标记前是否有一些空格

感谢您的响应-我尝试使用标记,但解析器在读取结束标记中的“/”字符时抛出异常。据我所知,我的模板中的标记单元格与JXLS站点上的示例相似。你能发布你的模板代码吗。这看起来像是语法错误。我的模板使用了与示例中所示相同的标记,只是我的测试明显不同。异常是:线程“main”java.lang.RuntimeException中的异常:无法设置公式:/at net.sf.jxls.formula.FormulaControllerImpl.writeFormulas(FormulaControllerImpl.java:137)…原因是:org.apache.poi.ss.formula.FormulaParseException:指定公式“/”中字符0“/”附近的解析错误。预期的单元格引用或常量文字该错误是否由另一个单元格中的斜杠字符引起?我不认为jx:if标记会被解析成一个公式。异常消息声明“/”位于公式的字符0处。我同意该消息似乎表明了这一点,但没有标记的模板工作正常。如果我删除结束标记,则不会发生异常,但不会发生参数替换;我接受了Serkan的答案,因为它更好地利用了JXLS特性,并将逻辑保留在模板中。