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

相关推荐
hPw0eKIqD10 小时前
使用二次封装的Excel COM 组件操作Excel\WPS ET中的区域、行和列
excel·wps
冰心孤城17 小时前
Excel: xls与xlsx格式转换排坑指南
java·前端·excel
一水20 小时前
TTFT优化:一个方案的5次推倒重来
java·ai·状态模式
金豆呀20 小时前
WPS批量提取Word文档内容生成固定格式Excel表格
word·excel·wps
Access开发易登软件21 小时前
Access 怎么做前后端分离?用 Web API 读写 SQL Server
前端·数据库·人工智能·microsoft·excel·access
yz_aiks2 天前
Requestly规则使用技巧:前端联调、接口Mock与网络请求调试实战
前端·网络·状态模式·requestly
红莲凪是2 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET IExcelRange 高级应用
python·excel·wps
星恒随风2 天前
C++ STL 详解:map 与 multimap 的使用、operator[]
开发语言·c++·笔记·学习·状态模式
用户298698530142 天前
如何使用免费工具在线将 Excel 转换为 XML 格式
人工智能·后端·excel
开开心心就好2 天前
内存清理工具定时自动清理开机自启动
java·开发语言·elasticsearch·ocr·excel·音视频·big data