C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
2024-10-12 20:41:33
报错信息:
最近打开下载的 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 = ;
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 > && Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, , Convert.ToInt32(ChunkSize));//读取的大小
Response.OutputStream.Write(buffer, , 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 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
最新文章
- 数据分析(7):pandas介绍和数据导入和导出
- ubuntu 16.04 忘记root密码的处理方法
- 忙碌的Nova君 (活动安排问题、贪心算法)
- pyenv 以及 virtualenv
- UML状态图和活动图
- Objective-C面向对象(三)
- java_线程安全-service
- 李洪强iOS开发本人集成环信的经验总结_07_监听好友请求
- arc engine - ILayer.
- java的Future使用方法
- 微信小程序用setData修改数组或对象中的一个属性值
- JavaScript Function.call() 函数详解
- Python3数据库模块(sqlite3,SQLite3)
- Java基本数据类型和长度
- Activiti开发案例之activiti-app工作流导出图片
- kubectl常用命令
- VS基本学习之(变量与常量)
- JAVA中异常状况总结
- LintCode题解之Search Range in Binary Search Tree
- ifstream 和 ofstream 用法。