题外话:通常在导入Excel文件时,会定义一套模板文件,让用户按此模板文件规定的内容进行填写,可以高效导入数据的同时,也利用Excel本身的功能,制定一些规则提示、有效性校验等,减少在代码中校验的繁琐(当然,为了保证数据的规范性,往往还应在代码中做再次校验,毕竟不按规则、偏不用模板导入的也确有人在)。
问题:通过下载的模板,打开文件时报错(wps 和 offlice-excel-2010 均提示文件损坏等...)
step--
1. 首先确定了响应内容编码格式已设置为 UTF-8
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
2. 使用 office-excel 打开项目中的模板文件,另存为 - 工具 - web 选项 - 编码格式,修改为 UTF-8 或 GB2312 ,均不可行。
3. 可能是 Maven 在编译时,损坏了模板文件,尝试将此文件过滤掉,在 pom.xml (web模块)中加入以下配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>2.6</version>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
注意在 <resources> 中要包含此文件类型,否则在下载时无法读取到该文件
<resources>
<resource>
<!-- 资源文件路径 -->
<directory>src/main/resources</directory>
<!-- 要包含的文件 -->
<includes>
<include>application-${env}.yml</include>
<include>application.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.ftl</include>
<include>**/*.xlsx</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
解决问题
--end
在导入Excel数据时,使用模板文件可以提高效率并进行有效性校验。但出现下载的模板文件在wps和Office Excel 2010中报错,提示文件损坏。已确认响应内容编码为UTF-8,尝试用Office另存为UTF-8或GB2312无效。问题可能由Maven编译引起。解决方案是在pom.xml的web模块资源配置中排除模板文件,确保下载时能正确读取。
4217

被折叠的 条评论
为什么被折叠?



