我正在尝试在 mac osx 环境中使用 Apache POI 3.8 读取文件,该文件是在 Windows 中使用 Open XML SDK 2.0 for Microsoft Office 创建的,由于无法加载 xlsx 文件,因此出现空指针异常。下面是堆栈跟踪。我可以打开文件并查看它。
相同的代码适用于我在 mac os env 中创建的文件。如果我在处理之前打开并保存文件,则没有任何问题。注意:保存后文件大小会增加。在 .net 中生成文件并在 mac osx 环境中处理文件是否存在问题。
任何线索为什么我会低于错误。
Caused by: java.lang.NullPointerException
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:253)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:183)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:73)
该类如下所示,带有实用方法,没有复制整个类。但这发生在wb = new XSSFWorkbook(bis)
创建工作簿时。我尝试了几个选项,例如WorkbookFactory.create(bis)
而不是XSSFWorkbook
,但错误仍然相同,问题主要在于文件内容。
public class XLSXReader {
private BufferedInputStream bis;
private boolean hasNext = true;
int skipLines;
private boolean linesSkiped;
// The default line to start reading.
public static final int DEFAULT_SKIP_LINES = 0;
private XSSFWorkbook wb =null;
private XSSFSheet sheet=null;
private int noOfCols;
public XLSXReader(InputStream is){
bis = new BufferedInputStream(is);
this.noOfCols=0;
try {
wb = new XSSFWorkbook(bis);
sheet = wb.getSheetAt(0);
} catch (Exception e) {
e.printStackTrace();
}
}
// with basic utility methods ....
}