如何使用 apache POI 将 excel table 存储到双字符串数组中?

How to store an excel table into a double String array using apache POI?

我想将 table 中的值保存在 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)

您永远不会初始化二维 String[] 。

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

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

getPhysicalNumberOfRows() 将只计算 sheet 中定义的行数。您正在迭代行,假设它们是连续的。是否有可能您的 spreadsheet 中有一个空行并且 getRow(j) 正在返回 null

您可以尝试这样的操作:

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