Poi读取Excle报错 java.util.zip.ZipException: invalid stored block lengths

参考:https://www.cnblogs.com/YJZUUID/p/9295241.html

使用excel模板导出,excel模板放在classpath下的(idea中resources目录),程序运行时,使用Resouce对象加载文件流,利用 inputStream 实例化XSSFWorkbook对象

Resource resource = new ClassPathResource("templates/"+template);
InputStream inputStream = resource.getInputStream();
Workbook workbook = new XSSFWorkbook(inputStream);

执行到

Workbook workbook = new XSSFWorkbook(inputStream);

报错java.util.zip.ZipException: invalid stored block lengths


参考资料,应该是编译代码时,把excel模板文件也重新编码了,导致excem模板文件格式损坏

解决方案,添加maven-resources-plugin插件,指定excel文件不编码

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <nonFilteredFileExtensions>
                        <!-- 需要过滤掉不需要编码的文件:过滤后缀为.xlsx或者.xls的所有文件,不对其进行统一编码-->
                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                        <nonFilteredFileExtension>xls</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
发布了178 篇原创文章 · 获赞 83 · 访问量 85万+

猜你喜欢

转载自blog.csdn.net/fuck487/article/details/103868599