在读取和保存服务器端的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()
调用?