问题解决:发现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 文件相关的内容即可。

相关推荐
yngsqq25 分钟前
CAD表格转excel
c#·excel
zhrb2 小时前
Maven简要使用说明:在IDEA中创建一个基于POI的处理Excel文件的简单Java Maven项目...
java·ide·maven·intellij-idea·excel
xyz20115 小时前
Flink State面试题和参考答案-(下)
flink·状态模式
青雾山河6 小时前
Excel+VBA+FFmpeg全能图片处理利器:批量选择、调整尺寸、压缩质量、图片合并,水平垂直合并一键搞定!
excel
左漫在成长6 小时前
王佩丰24节Excel学习笔记——第十七讲:数据函数
笔记·学习·excel
番茄电脑全能王6 小时前
电脑excel词典(xllex.dll)文件丢失是或损坏是什么原因?“xllex.dll文件缺失“要怎么解决?
电脑·excel
hfxns_7 小时前
Excel工作表不能相互移动和复制?有何解决方法?
excel
奔跑的犀牛先生19 小时前
概率论得学习和整理25:EXCEL 关于直方图/ 频度图 /hist图的细节,2种做hist图的方法
excel
棉晗榜20 小时前
.net core在linux导出excel,System.Drawing.Common is not supported on this platform
linux·excel·asp.net core·miniexcel