热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#Aspose.Cells导出xlsx格式Excel,打开文件报“Excel已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”...

报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)解决方案:下载代码(红色

报错信息:

最近打开下载的 Excel,会报如下错误。(xls 格式不受影响)

解决方案:

下载代码(红色为新添代码)

public void download()
{
string fileName = "456.zip";//客户端保存的文件名string filePath = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "Excel/123.zip";System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);if (fileInfo.Exists == true){//每次读取文件,只读取1M,这样可以缓解服务器的压力const long ChunkSize = 1048576;byte[] buffer = new byte[ChunkSize];Response.Clear();//获取文件System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);//获取下载的文件总大小long dataLengthToRead = iStream.Length;//二进制流数据(如常见的文件下载)Response.ContentType = "application/octet-stream";//通知浏览器下载文件而不是打开 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
//加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”Response.AddHeader("Content-Length", iStream.Length.ToString());using (iStream)//解决文件占用问题,using 外 iStream.Dispose() 无法释放文件
{while (dataLengthToRead > 0 && Response.IsClientConnected){int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小Response.OutputStream.Write(buffer, 0, lengthRead);Response.Flush();dataLengthToRead = dataLengthToRead - lengthRead;}iStream.Dispose();iStream.Close();}Response.Close();Response.End();}
}

给下载加了个长度,解决问题。

Response.AddHeader("Content-Length", iStream.Length.ToString());

 


原文:asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

转:https://www.cnblogs.com/cang12138/p/9003362.html



推荐阅读
author-avatar
十里春风不如你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有