我正在尝试读取作为示例创建的此文件,该文件由4列和1行组成。
以下代码用于测试我正在使用的API,即Apache POI。
package testjavaexcel;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
*
*/
public class TestJavaExcel {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("poi-test.xls");
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
HSSFSheet worksheet = workbook.getSheet("POI Worksheet");
HSSFRow row1 = worksheet.getRow(0);
HSSFCell cellA1 = row1.getCell((short) 0);
String a1Val = cellA1.getStringCellValue();
HSSFCell cellB1 = row1.getCell((short) 1);
String b1Val = cellB1.getStringCellValue();
HSSFCell cellC1 = row1.getCell((short) 2);
boolean c1Val = cellC1.getBooleanCellValue();
HSSFCell cellD1 = row1.getCell((short) 3);
Date d1Val = cellD1.getDateCellValue();
System.out.println("A1: " + a1Val);
System.out.println("B1: " + b1Val);
System.out.println("C1: " + c1Val);
System.out.println("D1: " + d1Val);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
来自“ HSSFRow row1 = worksheet.getRow(0);”行的错误输出为:
线程“ main”中的异常java.lang.NullPointerException在
testjavaexcel.TestJavaExcel.main(TestJavaExcel.java:28)Java结果:1
不知道为什么会这样...似乎很简单。请注意,调用的.getCell()方法全部被删除,表明已弃用的方法,但不确定在给定API的情况下如何替换它们。
谢谢,
更新:我发现,如果getCell采用int而不是使用short类型的旧版本,则使用新方法。修复了不建议使用的警告。其余的仍未解决。我也使用poi版本3.8
最佳答案
检查您的excel书籍中是否必须包含名称为“ POI Worksheet”(确切名称)的图纸。