2011-08-26 135 views
4

如何配置jxls API来读取excel表格,其中我不知道编译时的行号。jxls阅读excel与未知行号

什么是loopbreakcondition。

Cant jxls找出Excel表中有多少行有有效数据,然后在那里读取。

有什么替代方案?

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

+0

只是删除endRow属性。 – Makky

回答

0

使用此链接http://www.mail-archive.com/[email protected]/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条件的所有记录是reached.The endRow值稍微有一些混乱,但这里的回路断线由loopbreakcondition而不是由endRow值规定。

+0

这并没有完全回答这个问题,请更新您的答案,包括:1.如果它完全可能循环到文件结尾,2.如果不是,请指定周围的工作是添加页脚行 – thomaux

2

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

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

这将循环,直到找到一个空单元格作为下一行(offset=0rowcheck)在第一个单元格(offset=0上)最后一个有效的传球。您可以使用offset属性来更改单元格或行不能为空。

A rowcheck元素可以包含任意数量的元素。在我的情况下,输入Excel中没有任何单元格是强制的,因此我为该行中的每个单元格指定了空白的元素。

实施例(假设有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> 

含义:

停止循环如果下一行中的第三个单元是空的。