我正在Eclipse中使用poi导入Excel 2007文件。我的问题是NullPointerException
,但我不知道如何弄清楚它的来源。类Data
的实例可能有问题。这是代码:
import java.io.*;
import java.io.*;
import java.util.ArrayList;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.xmlbeans.XmlOptions;
class Data{
public Data(){};
public Data(double[] codnt, int ctgr1, int ctgr2) {
// super();
this.codnt = codnt;
this.ctgr1 = ctgr1;
this.ctgr2 = ctgr2;
}
double codnt[];
int ctgr1;
int ctgr2;
}
class Center{
public Center(int cycle, Data[] c) {
// super();
this.cycle = cycle;
this.c = c;
}
int cycle;
Data c[];
}
public class KmeansCluster {
@SuppressWarnings({ "static-access", "null" })
public static void main(String[] args)throws IOException,InvalidFormatException{
InputStream is = new FileInputStream(new File("src//artificial_exp1.xlsx"));
Workbook wb = WorkbookFactory.create(is);
Sheet sheet = wb.getSheetAt(0);
ArrayList<Data> list = new ArrayList<Data>();
int i = 0;
try {
for (Row row : sheet) {
Data dataTemp = new Data();
// int i = 0;
int j = 0;
for (Cell cell : row) {
row.getCell(0).setCellType(cell.CELL_TYPE_NUMERIC);
dataTemp.codnt[j] = cell.getNumericCellValue();
j++;
System.out.println("cell.getnumericcellvalue() is " + cell.getNumericCellValue() + "datatemp.condt[j] is " + dataTemp.codnt[j]);
System.out.println(" test passed !");
}
dataTemp.ctgr1 = (int) dataTemp.codnt[j - 2];
dataTemp.ctgr2 = (int) dataTemp.codnt[j - 1];
list.add(dataTemp);
i++;
}
Data data1 = (Data) list.get(0);
System.out.println(data1.codnt[0]
+ " is the content of the first blank.");
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
答案 0 :(得分:4)
Data
的无参数构造函数使codnt
未初始化。您可以通过在通用异常块