2012-04-19 30 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