我想保存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)
答案 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();
}