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

本文关键字:文件 出错 excel 保存 服务器端 读取 | 更新日期: 2023-09-27 18:18:52

我尝试了下面的代码在服务器端生成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();
        }
    }

在运行上面的代码时,我得到了一个错误:" 包对象被关闭和处置,所以不能对这个对象或在这个包的一部分上打开的任何流执行操作。 "

ERROR On This Line:

Response.BinaryWrite (package.GetAsByteArray ());

让代码继续运行。

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

如果您在保存之前获得字节,它会工作吗?

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

然后在Binarywrite;

中使用该值
Response.BinaryWrite(bin);

可能是.Save()呼叫结束了?