2016-02-08 31 views
0

我想將excel行的當前行號添加到映射的Employee變量中。如何將行號添加到員工循環變量?

從下面的例子:我想知道的是,員工的「尤里」是Excel行號8

但我無法找到任何方式來訪問它。 XLSRowCursor有它,但我怎樣才能將它添加到映射的bean?我知道,在編寫例外和POI時,讀者使用當前的處理行號。

對我而言,一個簡單的自行計數解決方案並不是一個有效的想法,因爲我們在錯誤機制中使用跳行。

任何提示或提示?

的xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <workbook> 
    .... 
    <loop startRow="7" endRow="7" items="department.staff" var="employee" varType="net.sf.jxls.reader.sample.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> 
    ... 
</loop> 
</worksheet> 
</workbook> 

Excel文件: 員工

6 Name Age Birth Date Payment Bonus Total Superior Name 
7 Oleg 32 2-Jan-74 2000 20,00% 2400 Maxim 
8 Yuri 29 26-Sep-77 1800 15,00% 2070 Oleg 
9 Leonid 30 12-Feb-76 1700 20,00% 2040 Oleg 
10 Alex 28 18-Aug-78 1600 20,00% 1920 Oleg 
11 Employee Payment Totals:   7100  8430  

回答

1

您可以擴展SimpleBlockReaderImpl並覆蓋其讀(XLSRowCursor光標,地圖豆)方法使用XLSRowCursor獲取當前的Excel行並將其注入到bean中。

目前還沒有通過XML注入自己CustomBlockReader實現,所以你將不得不通過讓所有的片讀者從XLSReader並與您的自定義情況下更換內部塊的讀者做手工,自動方式。

+2

非常好的主意,但是手動更換BlockReader不是很好。但是我交換了RowReaderBuilder,並調整了「digester.addObjectCreate(」*/section「)和我自己的SimpleBlockReaderImpl,這個工作正常。謝謝你的出色的幫助,我很高興有這個rowNumbers! –

相關問題