Java读取word文件 No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
有个项目涉及到了操作word文档,当我把一份未加密word文档放在项目resources目录下进行临时开发,读取这个word时报错:
1 | Caused by: org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: No valid entries or contents found, this is not a valid OOXML (Office Open XML) file |
从字面意思可以知道:读取的不是一份有效的文件。先查看测试用的word文档原件:
编译后的word文档打开有损坏提示,打开以后文件乱码:
这是异常提示读取的不是一个有效文件的原因
解决方法:
在项目的pom.xml文件里新增一个编译规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <build> <plugins> ... <!-- 过滤掉不需要编译的文件, 还可以是doc、xlsx、txt 等等--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF- 8 </encoding> <nonFilteredFileExtensions> <nonFilteredFileExtension>docx</nonFilteredFileExtension> <nonFilteredFileExtension>xlsx</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> ... </plugins> </build> |
再执行代码word文档就读取正常了。
当然,如果是word模板填充,还可以考虑将word模板换成html,使用Freemarker语法填充Html,还节省了读取文件的IO消耗
Freemarker语法填充Html:https://www.cnblogs.com/anyuan/p/15421548.html
分类:
JAVA / JAVA异常集合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?