2011-08-26 45 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> 

含義:

停止循環如果下一行中的第三個單元是空的。