EPPlus v4.5.0.2rc在ASP.NET Core MVC2.0(.NET4.7)导出Excel损坏
ASP.NET Core MVC 2.0 + EPPlus v4.5.0.2rc导出Excel损坏的解决办法
我用EPPlus已经好些年了,之前在ASP.NET Web Forms和ASP.NET MVC 5项目里用都没出过岔子,但最近切换到ASP.NET Core MVC 2.0(基于.NET 4.7平台),搭配EPPlus v4.5.0.2rc版本时,遇到了一个头疼的问题:导出的Excel文件总是损坏,根本没法被Excel正常打开。
一开始我以为是EPPlus版本和Core的兼容性问题,折腾了好半天,后来才发现问题出在前端的axios请求上!
之前在旧项目里用axios导出文件的时候,根本不需要额外设置响应类型,但在这个Core项目里,必须给axios的请求明确指定响应类型为blob,不然导出的文件就会损坏。
解决代码很简单,就是在axios的get请求里加上responseType: 'blob'配置:
axios.get(HS.Routes.Test.TestExcelDT(), { responseType: 'blob' })
原因其实很好理解:Excel文件是二进制格式,如果axios默认按字符串类型去解析响应,就会破坏二进制数据的完整性,导致文件损坏。指定responseType: 'blob'后,axios会以二进制流的形式接收响应,这样就能保证导出的Excel文件完整可用了。
内容的提问来源于stack exchange,提问作者Tab
相关产品推荐
相关产品推荐

