我正在使用apache poi从excel表中提取数据并尝试将提取的值保存在数组中。
我收到java.lang.NullPointerException
错误。
我搜索了它,显然当你试图为值为null
的对象赋值时触发了这个异常。
我尝试查找很多示例,但大多数示例代码只打印出单元格值。我想将它们保存在一个数组中以执行一些计算。
package exceltotext;
import java.io.*;
import java.lang.*;
import java.util.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class convert {
@SuppressWarnings("null")
public static void main(String[] args) throws IOException {
double [] modify = null ;
FileInputStream fs = new FileInputStream(new File ("Book1.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(fs);
XSSFSheet sheet = wb.getSheetAt(0);
FormulaEvaluator formulaevaluater = wb.getCreationHelper().createFormulaEvaluator();
for (Row row:sheet)
{
int num = 0;
for(Cell cell : row){
switch (formulaevaluater.evaluate(cell).getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
modify [num] = ( cell.getNumericCellValue());
num += num;
}
System.out.println(modify[num]);
}
}
}
}
答案 0 :(得分:1)
您的modify
数组为空,因此num += num;
会为您提供NPE。您需要为egzample double [] modify = new double[1000];
而不是double [] modify = null ;
答案 1 :(得分:0)
我认为,首先需要定义行,从中尝试提取值。
Apache Poi可以选择行,即XSSFRow。
PS我会亲自推荐HSSF而不是XSSF,因此HSSF适用于新版本的excel。如果XSSF使用相同的文档(版本不兼容的原因),则需要更改要在HSSF中使用的文件扩展名。