问题解决:发现Excel中的部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源,请单击“是”。

在开发同步导出功能是遇到了如标题所示的问题,解决后遂记录下来供大家参考。

java 复制代码
@RestController
public class XxxController {
	@PostMapping("/export")
    public BaseResponse export(@RequestBody PolicyErrorAnalysisExportReq exportReq, HttpServletResponse response) {
        BaseResponse res = new BaseResponse();
        try {
			// ...
		} catch(Exception e) {
	
		}

		return res
	}
}

执行如上方法导出时,打开的 Excel 文件会提示:发现Excel中的部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源,请单击"是"。

因为前端在处理文件流时,不知道文件流的长度,会全量处理文件流,由于指定了 @RestController 注解,那么 BaseResponse res 会被包含在响应体中,那么这样前端便解析到了无关的字符。将导出的 Excel 文件修改成 .xml 后缀查看其中信息 ,如下所示:

发现果然包含了响应对象的 JSON 格式,解决该问题也非常简单,第一种方案是直接将返回值改成 void,让前端只处理流即可

java 复制代码
@RestController
public class XxxController {
	@PostMapping("/export")
    public void export(@RequestBody PolicyErrorAnalysisExportReq exportReq, HttpServletResponse response) {
        try {
			// ...
		} catch(Exception e) {
	
		}

	}
}

第二种方案是在响应头中指定输出流的长度,到了指定长度后前端便不再处理,只解决 Excel 文件相关的内容即可。

相关推荐
将编程培养成爱好7 小时前
C++ 设计模式《外卖骑手状态系统》
c++·ui·设计模式·状态模式
侯得山17 小时前
ExcelToKml(Excel版)
excel·谷歌地球·kml·exceltokml
向葭奔赴♡19 小时前
Spring Boot参数校验全流程解析
状态模式
侯得山21 小时前
批量坐标转换(Excel版)
excel·坐标转换·地理坐标·cgcs2000·直角坐标
Emma歌小白1 天前
在 Excel 中要把数字补齐到固定长度
excel
AlfredZhao1 天前
高效办公:用SQL*Loader轻松实现Excel数据入库
excel·csv·tools·sqlldr·sql*loader
开开心心_Every1 天前
专业视频修复软件,简单操作效果好
学习·elasticsearch·pdf·excel·音视频·memcache·1024程序员节
阿珊和她的猫1 天前
Webpack 打包体积优化:让应用更轻量、更高效
前端·webpack·状态模式
穿西装的水獭1 天前
python将Excel数据写进图片中
开发语言·python·excel
老友@1 天前
Java Excel 导出:EasyExcel 使用详解
java·开发语言·excel·easyexcel·excel导出