简体   繁体   中英

Error while reading and saving the excel file on serverside

I have tried the below coding for generating excel file on serverside.

C# CODING:

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();
        }
    }

While running the above code i got an error as : " Package object was closed and disposed, so cannot carry out operations on this object or any stream opened on a part of this package. "

ERROR On This Line:

Response.BinaryWrite(package.GetAsByteArray());

Make some way for this coding to move on.

Thanks in advance.

Does it work if you get the bytes before you do the Save ?

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

And then use that value in the Binarywrite;

Response.BinaryWrite(bin);

Maybe it is getting closed on the .Save() call ?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM