如何使用apache POI将excel表存储到双String数组中?

时间:2015-08-18 16:18:07

标签: java excel apache-poi xls

我想保存excel中的表中的值并将它们存储到String[][]变量中,以便更容易操作,这是我的代码:

public class TakingDataFromExcel {
  public static void main(String[] args) {
    try{
        FileInputStream file = new FileInputStream(new File("C:\\Book1.xls"));
        Workbook workbook = new HSSFWorkbook(file);
        Sheet sheet = workbook.getSheetAt(0);
        String[][] headers= null;
        String value = null;
        for (int i= 0;i < sheet.getPhysicalNumberOfRows(); i++) {
            DataFormatter formatter = new DataFormatter();
            for (int j=0; j<=6;j++) {
                Row row = sheet.getRow(i);
                value = formatter.formatCellValue(row.getCell(j));
                headers[i][j].concat(value.toString()); 
            }
        }     
        System.out.println(headers); 
        System.out.println(sheet.getPhysicalNumberOfRows());
        String[] cdsid=null;
        cdsid=headers[1][1].split(" ");
        for (int x=0; x<cdsid.length;x++) {
            System.out.println(cdsid[x]);
        }
        file.close();
        }catch (Exception e){
        e.printStackTrace();
        }
   }
}

我仍然得到一个空指针异常错误,但我看不到它在哪里。如果您认为有更简单的方法来执行此任务,我愿意接受任何建议。

这是错误:

java.lang.NullPointerException
at com.ford.samples.TakingDataFromExcel.main(TakingDataFromExcel.java:26)

2 个答案:

答案 0 :(得分:1)

你永远不会初始化你的2维字符串[]。

String[][] headers= null;应该是

String[][] headers= new String[SOME_X][SOME_Y]

答案 1 :(得分:0)

getPhysicalNumberOfRows()将只计算工作表中定义的行数。您正在迭代行,假设它们是顺序的。您的电子表格中是否有空行且getRow(j)正在返回null

您可以尝试这样的事情:

Iterator<Row> rowIt = sheet.rowIterator();
while (rowIt.hasNext()) {
  Row row = rowIt.next();           
}