Как запустить этот код из контроллера? - PullRequest
1 голос
/ 26 октября 2010

Я нашел код для экспорта данных в Excel, но не могу понять, как заставить контроллер возвращать результаты.

есть предложения?вот код

dt = city.GetAllCity();//your datatable 
    string attachment = "attachment; filename=city.xls"; 
    Response.ClearContent(); 
    Response.AddHeader("content-disposition", attachment); 
    Response.ContentType = "application/vnd.ms-excel"; 
    string tab = ""; 
    foreach (DataColumn dc in dt.Columns) 
    { 
        Response.Write(tab + dc.ColumnName); 
        tab = "\t"; 
    } 
    Response.Write("\n"); 
    int i; 
    foreach (DataRow dr in dt.Rows) 
    { 
        tab = ""; 
        for (i = 0; i < dt.Columns.Count; i++) 
        { 
            Response.Write(tab + dr[i].ToString()); 
            tab = "\t"; 
        } 
        Response.Write("\n"); 
    } 
    Response.End(); 

1 Ответ

0 голосов
/ 26 октября 2010

Вы можете просто вернуть FileStreamResult :

public ActionResult DownloadCities()
{
    dt = city.GetAllCity();//your datatable 
    string attachment = "attachment; filename=city.xls";

    var writer = new StreamWriter(new MemoryStream());

    string tab = "";
    foreach (DataColumn dc in dt.Columns)
    {
        writer.Write(tab + dc.ColumnName);
        tab = "\t";
    }
    writer.Write("\n");
    int i;
    foreach (DataRow dr in dt.Rows)
    {
        tab = "";
        for (i = 0; i < dt.Columns.Count; i++)
        {
            writer.Write(tab + dr[i]);
            tab = "\t";
        }
        writer.Write("\n");
    }

    return File(writer.BaseStream, "application/vnd.ms-excel", "city.xls");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...