如何使用 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();
}
我想将 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();
}