jxls读取excel与未知的行数

时间:2011-08-26 14:34:55

标签: java excel jxls

如何配置jxls API以读取Excel工作表,在编译时我不会知道行数。

什么是循环破坏条件。

不能找出excel表中有多少行有效数据,并在那里读取。

有哪些替代方案?

参考[http://jxls.sourceforge.net/reference/reader.html] [1]

2 个答案:

答案 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值控制。

相关问题