簡體   English   中英

使用asp.net mvc導出到excel函數時,帶有響應對象的nullreference異常

[英]nullreference exception with reponse object in export to excel function using asp.net mvc

我有以下將導出到excel的方法,我的目的是當我單擊網頁上的鏈接時,出於這個目的,我需要將kendo ui網格中的數據與該asp.net MVC4一起導出到excel。方法.....

下面的方法是當我單擊視圖上的exporttoexcel操作鏈接時將調用的操作方法

    public ActionResult ExportToExcel()
    {

        byte[] file;
        string targetFilename = string.Format("{0}-{1}.xlsx", "Generated", "excel");

        DataTable dt = common.CreateExcelFile.ListToDataTable(GetSearchDraftPRResults());
        common.CreateExcelFile excelFileForExport = new CreateExcelFile();
        file = excelFileForExport.CreateExcelDocumentAsStream(dt, targetFilename);
        Response.Buffer = true;
        return File(file, "application/vnd.ms-excel", targetFilename);          
    }

下面的方法是用於創建excel文檔

    public byte[] CreateExcelDocumentAsStream(DataTable dt, string filename)
    {

        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        System.Web.HttpResponse Response = null;

        System.IO.MemoryStream stream = new System.IO.MemoryStream();
        using (SpreadsheetDocument document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook, true))
        {
            WriteExcelFile(ds, document);
        }
        stream.Flush();
        stream.Position = 0;

        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";

        Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        Response.AddHeader("content-disposition", "attachment; filename=" + filename);
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        byte[] data1 = new byte[stream.Length];
        stream.Read(data1, 0, data1.Length);
        return stream.ToArray();
    }

但是,當我單擊操作鏈接時,此行出現錯誤NullReferenceexpection

   Response.Clear();

我不確定為什么會收到此異常,並且我正在使用打開的xml dll導出到excel

我不確定此過程,這是導出到excel功能的正確方法嗎..任何人都可以指導我正確的方向...

有人可以幫忙嗎,我會非常感激

提前謝謝了....

您真的不需要在CreateExcelDocumentAsStream()方法中弄亂Response 顧名思義,該方法的唯一職責是創建Excel文件並將其作為byte[]數組返回。

然后,(MVC)操作負責設置適當的響應頭和行為,以適應客戶端(在這種情況下為Web瀏覽器)的需求。

同樣,當您返回FileResult ,它會負責設置Http響應,在Action中也不需要Response.Clear()Response.Buffer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM