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

时间:2011-07-30 02:22:17

标签: java excel apache-poi

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

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

有没有办法在JXLS中这样做?或者,任何人都可以建议使用JExcel或POI这样做的补充方式吗?

3 个答案:

答案 0 :(得分:2)

您可以使用< jx:if>您的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>

如果someData不为空,则输出中将打印行,但如果someData为空,则此模板不会打印任何行。

我希望我能说清楚。有关标记的详细信息,请参阅http://jxls.sourceforge.net/reference/tags.html

答案 1 :(得分:1)

我认为这可以通过POI实现 - 甚至可能是JXLS的POI对象界面:

来自http://poi.apache.org/spreadsheet/how-to.html
修改您已读入的文件很简单。您可以通过评估器方法检索对象,通过父对象的remove方法(sheet.removeRow(hssfrow))将其删除,并像创建新的xls一样创建对象。完成修改单元格后,只需像上面一样调用workbook.write(outputstream)。

来自http://jxls.sourceforge.net/reference/customprocessor.html
使用Row对象,您可以访问相关的POI对象,以便在需要时修改单元格样式。

答案 2 :(得分:1)

基于jx不显示行的另一个原因:if条件是在jx之前是否有空格:if标记