java编译/打包完成后,导致Excel静态文件损坏,格式乱码问题

java编译/打包完成后,导致Excel静态文件损坏,格式乱码问题

问题描述:

在项目中放置一个可供用户登录后下载的excel模版,项目在打包成功后,在target中直接打开excel,发现excel已经损坏。

问题原因:

项目在编译或者打包过程中,会对excel进行编译,这样经过文件filter过滤一遍之后,excel文件就损坏了。个人猜测问题源自于maven-resources-plugin这个插件。这个插件会把resources目录下的文本文件进行转码,但它无法正确的识别哪些是文本文件,因而会错误的将不需要进行转码的二进制文件也进行转码,导致这些二进制文件无法打开。目前一直有两种方法。

方法一:

	<resource>
		<directory>src/main/resources</directory>
		<filtering>true</filtering>
	</resource>

将原来的resource换成

	<resource>
	    <directory>src/main/resources</directory>
	    <excludes>
	        <exclude>**/*.xlsx</exclude>
	    </excludes>
	    <filtering>true</filtering>
	</resource>
	<resource>
	    <directory>src/main/resources</directory>
	    <includes>
	        <include>**/*.xlsx</include>
	    </includes>
	    <filtering>false</filtering>
	</resource>

第一段配置声明:在src/main/resources目录下,后缀是.xlsx的文件不是资源文件,其它的资源文件需要被过滤。而第二段配置声明:同样在src/main/resources目录下,后缀是.xlsx的文件是资源文件,但是不会被过滤。

配置完成后,如果重新编辑(打包)没有效果,需要maven claen 或者删除target文件重新编译一遍就可以啦,基本上我遇到的问题就解决了,如果还不行,试试讲项目删除,重新拉下再试。

方法二:
是在pom.xml中的maven-resources-plugin下,将不需要转码的文件扩展名填入nonFilteredFileExtensions

	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-resources-plugin</artifactId>
		<version>3.0.2</version>
		<configuration>
			<encoding>UTF-8</encoding>
			<nonFilteredFileExtensions>
				<nonFilteredFileExtension>xls</nonFilteredFileExtension>
				<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
			</nonFilteredFileExtensions>
		</configuration>
	</plugin>
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值