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

相关推荐
Logic1012 小时前
表格智能记账3 销售与库存智能联动,自动标红库存预警
excel·条件格式·excel技巧·vlookup·sumif
一级新生11 小时前
多智能体协作:常用协作模式详解
人工智能·状态模式·agent·多智能体·智能体
技术小甜甜12 小时前
【Copilot】能选 Claude 和 GPT-6 了,Excel 分析该交给谁
gpt·excel·copilot·claude·microsoft365·gpt-6
小白今天也很酷1 天前
MCXN947更新板载DAP_Link固件的方法
c语言·python·单片机·ubuntu·excel·1024程序员节
喜欢打篮球的普通人2 天前
LLVM 前端与优化层:Clang 如何把 C 代码变成 IR
c语言·前端·状态模式
ratel️2 天前
小墨析 · Office Agent 日常办公不烧心
python·langchain·word·excel·fastapi·js·ppt
Logic1012 天前
没有TextSplit函数的老版本也能拆分单元格的内容
excel·拆分数据·excel技巧·数据拆分·拆分单元格·textsplit·旧版excel
2601_967987372 天前
你们都用Python实现了哪些自动化办公?
python·excel·自动化办公·1024程序员节·学习资料·跨平台操作
城数派2 天前
1901-2025年中国省/市/县三级逐月平均气温数据Excel+Shp格式
excel
m0_敲代码的彭于晏1683 天前
Vercel 前端部署与全栈开发实战指南
前端·状态模式