笔者在 Win10 下使用 POI 4.1.2 版本读写 Excel 文件时遇到了一个奇怪的问题,经过一翻探索终于找到了解决方案。故有此记。
闲话不多说,先上代码!
1 | public void test() throws IOException { |
执行以上代码时,很奇怪的地方在于,只读取文件并不会有任何问题。但是,如果修改了内容并要回写文件就会报以下错误:
1 | org.apache.poi.ooxml.POIXMLException: java.io.EOFException: Unexpected end of ZLIB input stream |
最初笔者以为是什么资源未正确关闭引起的,仔细检查后并未发现有不妥之处。经过一番搜索,在 Stack Overflow 发现了一个相关帖子,提及这可能是 POI 的一个 Bug,建议不要使用文件对象创建 Workbook
,而应使用输入流。
据此,将创建代码改为如下形式:
1 | Workbook workbook = WorkbookFactory.create(new FileInputStream(copyFile)); |
错误就此解决。