在读取和保存服务器端的excel文件时出错

我已经尝试了以下代码在服务器端生成excel文件。

C#编码:

public void ReadandOpenExcel(DirectoryInfo outputDir) { //FileInfo newFile = new FileInfo(outputDir.FullName + @"\New Microsoft Excel Worksheet.xlsx"); var ExistFile = Server.MapPath("~/excelsample.xlsx"); var File = new FileInfo(ExistFile); using (ExcelPackage package = new ExcelPackage(File)) { package.Load(new FileStream(ExistFile, FileMode.Open)); ExcelWorksheet workSheet = package.Workbook.Worksheets["Sheet1"]; workSheet.Cells["A8"].Value = "kevin"; package.Save(); Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("Content-Disposition", "attachment; filename=ProposalRequest.xslx"); **Response.BinaryWrite(package.GetAsByteArray());** // myMemoryStream.WriteTo(Response.OutputStream); //works too Response.Flush(); Response.Close(); } } 

当运行上面的代码时,我得到一个错误:“ 包对象被closures和处置,所以不能对这个对象或在这个包的一部分上打开的任何stream进行操作。

错误在这条线上:

Response.BinaryWrite(package.GetAsByteArray());

让这个编码继续前进。

提前致谢。

如果在执行保存之前获取字节,它是否工作?

 Byte[] bin = package.GetAsByteArray(); package.Save(); 

然后在Binarywrite中使用这个值;

 Response.BinaryWrite(bin); 

也许它正在closures.Save()调用?