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

相关推荐
UrbanJazzerati12 小时前
使用Excel制作多类别占比分析字母饼图
excel
The Future is mine16 小时前
Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作
excel
Tomorrow'sThinker1 天前
[特殊字符] Excel 读取收件人 + Outlook 批量发送带附件邮件 —— Python 自动化实战
python·excel·outlook
盛夏绽放1 天前
ExcelJS 完全指南:专业级Excel导出解决方案
excel·有问必答
bing_1581 天前
Excel 如何进行多条件查找或求和?
excel
秀儿还能再秀1 天前
基于Excel的数据分析思维与分析方法
数据分析·excel
bing_1581 天前
Excel 如何处理更复杂的嵌套逻辑判断?
excel
weixin_472339461 天前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
灵犀学长1 天前
EasyExcel之SheetWriteHandler:解锁Excel写入的高阶玩法
spring boot·excel
全干engineer2 天前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出