问题描述
错误信息:文件“d:201012110047138839434.xls”正由另一进程使用,因此该进程无法访问该文件。源码:///<summary>///保存到客户端///</summary>///<paramname="MyPage"></param>///<paramname="ClientFileName"></param>///<paramname="filePath"></param>privatevoidClientSave(System.Web.UI.PageMyPage,stringClientFileName,stringfilePath){MyPage.Response.ContentType="Application/octet-stream";MyPage.Response.AppendHeader("Content-Disposition","inline;filename="+ClientFileName);byte[]b=getByte(filePath);//确保该目录下有这个文件//创建内存流,将该文件写入内存流中System.IO.MemoryStreamm=newSystem.IO.MemoryStream(b);m.WriteTo(MyPage.Response.OutputStream);m.Close();if(System.IO.File.Exists(filePath)){System.IO.File.Delete(filePath);}MyPage.Response.End();}
///<summary>///将制定路径的文件转换成字节数组///</summary>///<paramname="filePath"></param>///<returns></returns>privatebyte[]getByte(stringfilePath){////EndExcelProcess();//Process[]myProcesses;//DateTimestartTime;//myProcesses=Process.GetProcessesByName("Excel");//foreach(ProcessmyProcessinmyProcesses)//{//startTime=myProcess.StartTime;//if(startTime>beforeTime&&startTime<afterTime)//{//inti=1;//while(!myProcess.HasExited)//{//i++;//}//i++;//while(true)//{//i++;//if(i==1000)//{//break;//}//}//}//}FileStreamfs=File.OpenRead(filePath);//测试时此处出现问题,我加了以上注过的代码也不行byte[]UpFile=newbyte[fs.Length];fs.Read(UpFile,0,UpFile.Length);fs.Close();returnUpFile;}
解决方案
解决方案二:
兄弟你的保存Execl的能发给我看看么正好我最近也在做这块希望发我邮箱462375513@QQ.com谢谢
解决方案三:
另外无法下载可能是Execl进程没有关闭把生成的Execl占用了
解决方案四:
可能是生成excel文件时没有关闭被生成的文件,
解决方案五:
首先感谢大家的帮忙,这些天一直没上来,太忙了,问题给了另一个同事让他去处理了,我做其他事了,呵呵,不好意思,这几天出差才回!这方面的内容已做好,如有需要,我可以发些源码,不过我不是很专业,只能说是边学边用