[英]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.