2012-04-19 59 views
0

我正在使用Apache POI來解析excel文件,並且得到的值是row.getCell(5).getNumericCellValue(),假設該行上的cell(5)始終爲數字。在Java中解析excel時Apache Poi問題?

是否可以智能地解析文件,這樣即使列的順序被改變,甚至混亂,然後我們可以看看基於columnName值,這樣的合同年總是來自Contract Year標記列 - 無論該列是否是第6或第7列?

回答

1

你可以實現一個叫getContractYearColumnIndex()的函數,它返回你需要的索引。

private int getContractYearColumnIndex(){ 
    final int maxColIndex = 25; 
    int colIndex = 0; 
    HSSFRow titleRow = yourSheet.getRow(0); 
    String value = titleRow.getCell(colIndex).getStringCellValue(); 

    while(value != "Contract Year" && colIndex < maxColIndex){ 
     colIndex = colIndex + 1; 
     value = titleRow.getCell(colIndex).getStringCellValue(); 
    } 
    return colIndex; 
} 

當然,這個實現假設你要找的標題在第一行(索引0)。

+0

好的,但這裏的東西是該文件是可配置的,所以有可能存在行可能存在或他們不能存在沒有文件 – Rachel 2012-04-19 18:04:55

+0

這也會增加系統權限上的處理負載。 – Rachel 2012-04-19 18:06:25

+0

是的,這將是一個表現。 Excel並不是一個很好的格式來存儲結構化數據,雖然我知道你可能很無奈,在這種情況下:) – 2012-04-19 18:11:47