簡體   English   中英

導出到Excel不在ASP.NET MVC 4中工作

[英]Export to Excel not working in ASP.NET MVC 4

我有一個代碼,將生成一個excel report.i我正在使用ASP.NET MVC 4.我googled並發現相同的代碼到處仍然我的代碼不工作為什么。 我在控制器中的代碼如下:

public ActionResult ExportData()
{
     string[] abc = { "AAA", "BBB", "CCC" };
     GridView gv = new GridView();
     gv.DataSource = abc;
     gv.DataBind();
     Response.ClearContent();
     Response.Buffer = true;
     Response.AddHeader("content-disposition", "attachment; filename=Marklist.xls");
     Response.ContentType = "application/ms-excel";
     Response.Charset = "";
     StringWriter sw = new StringWriter();
     HtmlTextWriter htw = new HtmlTextWriter(sw);
     gv.RenderControl(htw);
     Response.Output.Write(sw.ToString());
     Response.Flush();
     Response.End();

     return RedirectToAction("_EligibilityCriteria");  
} 

為了測試導出功能,我使用了一個數組abc這個代碼在.net應用程序中工作,但在ASP.NET MVC 4應用程序中沒有。 我調試了代碼但沒有在代碼中發現問題或錯誤。

我在這做錯了什么?

終於找到了一種導出到excel的方法。

 public void ExportIniEmployeeToExcel(EligibilityCriteriaModel AllIniEmp)
    {
        List<AllIniEmployees> emp = new List<AllIniEmployees>();            
        AllIniEmp.allSuccessEmployeeList.ForEach(x =>
            {
                AllIniEmployees allEmp = new AllIniEmployees();
                allEmp.EmployeeCode = x.EmployeeCode;
                allEmp.EmployeeName = x.EmployeeName;
                allEmp.Designation = x.Designation;
                allEmp.DeliveryTeam = x.DeliveryTeam;
                allEmp.ConfirmationDate = x.ConfirmationDate;
                emp.Add(allEmp);
            });
        GridView gv = new GridView();
        gv.DataSource = emp;
        gv.DataBind();
        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=InitiatedEmployees.xls");
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        gv.RenderControl(htw);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }

在這里我使用父類作為參數並使用linq.now它的工作完全正常。 謝謝你們。

您不能只使用StringWriter 編寫輸出。 在調用RenderControl ,寫下:

byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.ASCII);

Response.Write(sr.ReadToEnd());
Response.End();

嘗試返回ContentResult而不是直接寫入輸出流。

暫無
暫無

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

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