如何使用Apache POI将一个Excel表格存储到一个双string数组中?

我想从excel中保存表中的值并将它们存储到一个String[][]variables中,以便于操作,下面是我的代码:

 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(); } } } 

我仍然得到一个空指针exception错误,但我不能看到它在哪里。 如果您认为有一个更简单的方法来完成这项任务,我愿意接受任何build议。

这里是错误:

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

你永远不会初始化你的2维String []。

String[][] headers= null; 应该

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

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

你可以尝试这样的事情:

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