Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用apache poi编写excel文件时出现NullPointerException_Java_Apache Poi_Poi Hssf_Hssf - Fatal编程技术网

Java 使用apache poi编写excel文件时出现NullPointerException

Java 使用apache poi编写excel文件时出现NullPointerException,java,apache-poi,poi-hssf,hssf,Java,Apache Poi,Poi Hssf,Hssf,我试图从模板加载excel文件(xls),设置一个单元格的值并将其写入另一个文件。但我有一个例外: java.lang.NullPointerException at org.apache.poi.poifs.filesystem.FilteringDirectoryNode$FilteringIterator.<init>(FilteringDirectoryNode.java:193) at org.apache.poi.poifs.filesystem.Filt

我试图从模板加载excel文件(xls),设置一个单元格的值并将其写入另一个文件。但我有一个例外:

java.lang.NullPointerException
    at org.apache.poi.poifs.filesystem.FilteringDirectoryNode$FilteringIterator.<init>(FilteringDirectoryNode.java:193)
    at org.apache.poi.poifs.filesystem.FilteringDirectoryNode$FilteringIterator.<init>(FilteringDirectoryNode.java:188)
    at org.apache.poi.poifs.filesystem.FilteringDirectoryNode.getEntries(FilteringDirectoryNode.java:101)
    at org.apache.poi.poifs.filesystem.FilteringDirectoryNode.iterator(FilteringDirectoryNode.java:105)
    at org.apache.poi.poifs.filesystem.EntryUtils.copyNodes(EntryUtils.java:74)
    at org.apache.poi.poifs.filesystem.EntryUtils.copyNodes(EntryUtils.java:90)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1395)
    at de.ajs.dailyreport.runtime.services.WorkDiaryExcel.write(WorkDiaryExcel.java:37)
    at de.ajs.dailyreport.runtime.services.WorkDiaryExcelTest.someTest(WorkDiaryExcelTest.java:35)
    ...
此代码从测试调用:

@Test
public void someTest() throws IOException {
    WorkDiaryExcel to = new WorkDiaryExcel(reportMock);
    FileOutputStream out = new FileOutputStream("out.xls");
    to.write(out);
}

那么是什么导致了这个问题呢?

我发现了问题:我在excel中打开了模板。所以,当我用模板文件关闭excel时,一切都很好——非常奇怪,不是吗?

您使用的是什么版本的Apache POI?如果不是最新版本,升级时会发生什么?调用getDate()时reportMock会返回什么?转到FilteringDirectoryNode.java:193(您需要POI版本的源代码),如果可以使用最新版本复制它并生成独立的单元测试,您可能会找到有用的信息(包括有效的Excel示例文件),然后请报告Apache POI的一个错误,因为它听起来好像没有正确处理。我遇到了相同的问题,但我关闭了所有打开的工作簿和文件,但在执行“工作簿.write(fileOut)”时仍然出现空指针异常我会仔细检查文件上是否还有文件句柄(可能不是excel,而是其他任何文件)。为此,我使用“ProcessExplorer”。查找->查找句柄或DLL
@Test
public void someTest() throws IOException {
    WorkDiaryExcel to = new WorkDiaryExcel(reportMock);
    FileOutputStream out = new FileOutputStream("out.xls");
    to.write(out);
}