在数组

时间:2016-08-01 14:11:49

标签: java nullpointerexception apache-poi

我正在使用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]);
           }
        }
    }
}

2 个答案:

答案 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中使用的文件扩展名。