如何配置jxls API以读取Excel工作表,在编译时我不会知道行数。
什么是循环破坏条件。
不能找出excel表中有多少行有效数据,并在那里读取。
有哪些替代方案?
参考[http://jxls.sourceforge.net/reference/reader.html] [1]
答案 0 :(得分:2)
您可以指定空白值作为循环中断条件
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0"></cellcheck>
</rowcheck>
</loopbreakcondition>
这将循环,直到它找到一个空单元格作为最后一个有效行之后的下一行(offset=0
上的cellcheck
)上的第一个单元格offset=0
rowcheck
)通过。您可以使用offset
属性更改哪个单元格或行不能为空。
rowcheck
元素可以包含任意数量的cellcheck
元素。在我的情况下,输入Excel中的所有单元格都不是必需的,因此我为该行中的每个单元格指定了一个空白cellcheck
元素。
示例(假设连续有3个单元格)
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0"></cellcheck>
<cellcheck offset="1"></cellcheck>
<cellcheck offset="2"></cellcheck>
</rowcheck>
</loopbreakcondition>
含义:
如果下一行中所有的单元格都为空,则停止循环。
如果您需要一些单元格不是空白,您可以通过仅包含所需的单元格来简化上述中断条件。
示例(假设连续有3个单元格,最后一个单元格是强制的)
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="2"></cellcheck>
</rowcheck>
</loopbreakcondition>
含义:
如果下一行中的第三个单元格为空,则停止循环。
答案 1 :(得分:0)
使用此链接http://www.mail-archive.com/jxls-user@lists.sourceforge.net/msg00094.html
基本上你只需要定义光标开始位置..
<loop startRow="7" endRow="7" items="department.staff" var="employee" varType="net.sf.jxls.sample.model.Employee">
<section startRow="7" endRow="7">
<mapping row="7" col="0">employee.name</mapping>
<mapping row="7" col="1">employee.age</mapping>
<mapping row="7" col="3">employee.payment</mapping>
<mapping row="7" col="4">employee.bonus</mapping>
</section>
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0">Employee Payment Totals:</cellcheck>
</rowcheck>
</loopbreakcondition>
</loop>
这将读取第7行的所有记录,直到达到循环条件。此处的endRow值稍微有些混乱,但循环中断由循环中断条件控制,而不是由endRow值控制。