在asp.net MVC中导出HTML表

TSt*_*per 7 c# asp.net-mvc

我试图导出一个名为Table的HTML表,该表被动态绑定到C#中的ViewData.Model.我有一个名为export的方法,它根据另一个方法的动作调用.所以在此之前的所有内容都已设置好.我只是不知道如何将数据导出到CSV或Excel文件中.所以当我进入导出方法时,我不知道接下来要做什么来导出表格.有人能帮我吗

    public void Export(List<data> List)
    {
     //the list is the rows that are checked and need to be exported
       StringWriter sw = new StringWriter();

     //I don't believe any of this syntax is right, but if they have Excel export to excel and if not export to csv  "|" delimeted

   for(int i=0; i<List.Count;i++)
    {
              sw.WriteLine(List[i].ID+ "|" + List[i].Date + "|" + List[i].Description);

    }
    Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
    Response.ContentType = "application/ms-excel";
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
    Response.Write(sw);
    Response.End(); 

    }
Run Code Online (Sandbox Code Playgroud)

Cha*_*ino 15

我不太了解整个"导出一个名为Table的HTML表,它被动态绑定到ViewData.Model",因此我将忽略它并专注于您的Export(List <data> list)方法.顺便说一句,你从来没有真正提到出了什么问题以及在哪里.

我看到你写过"如果他们有Excel导出到excel,如果没有导出到csv" - 我个人只是将其导出为CSV文件,因为excel可以处理csv文件没问题.

因此,考虑到这一点,这将是我的基于您的代码的导出方法.

public void Export(List<DataType> list)
{
    StringWriter sw = new StringWriter();

    //First line for column names
    sw.WriteLine("\"ID\",\"Date\",\"Description\"");

    foreach(DataType item in list)
    {
        sw.WriteLine(string.format("\"{0}\",\"{1}\",\"{2}\"",
                                   item.ID,
                                   item.Date,
                                   item.Description));
    }

    Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
    Response.ContentType = "text/csv";
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
    Response.Write(sw);
    Response.End(); 
}
Run Code Online (Sandbox Code Playgroud)