4

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

什么是loopbreakcondition。

无法 jxls 找出 excel 工作表中有多少行有有效数据,并一直读到那里。

有哪些选择?

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

4

2 回答 2

2

您可以指定一个空白值作为循环中断条件

<loopbreakcondition>
    <rowcheck offset="0">
        <cellcheck offset="0"></cellcheck>
    </rowcheck>
</loopbreakcondition>

这将循环直到在最后一次有效传递之后找到一个空单元格作为下一行(on )中的第一个单元格( offset=0on )。您可以使用属性来更改哪些单元格或行不能为空。cellcheckoffset=0rowcheckoffset

一个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>

意义:

如果下一行中的第三个单元格为空,则停止循环。

于 2016-08-30T10:48:06.313 回答
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 行中的所有记录,直到达到 loopbreak 条件。endRow 值在这里有点混乱,但循环中断由 loopbreakcondition 而非 endRow 值控制。

于 2012-03-07T04:38:35.527 回答