2015-08-14 2 views
0

У меня есть GridView и когда я нажимаю кнопку «Экспорт» для экспорта моих данных в CSV. Я нажимаю кнопку, и она берет все данные правильно, но ничего не показывает, нет всплывающего окна, чтобы попросить меня открыть или сохранить.Экспорт в CSV-сайт asp

Вот мой код

protected void btnExport_Click(object sender, EventArgs e) 
{ 
    ExportCSV(); 
} 

protected void ExportCSV() 
{ 
    GridViewSW.DataSource = ViewState["source"]; 
    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment;filename=Orders.csv"); 
    Response.Charset = ""; 
    Response.ContentType = "application/text"; 
    GridViewSW.AllowPaging = false;   
    GridViewSW.DataBind(); 

    StringBuilder columnbind = new StringBuilder(); 
    for (int k = 0; k < GridViewSW.Columns.Count; k++) 
    { 
     columnbind.Append(GridViewSW.Columns[k].HeaderText + ","); 
    } 
    columnbind.Append("\r\n"); 

    for (int i = 0; i < GridViewSW.Rows.Count; i++) 
    { 
     for (int j = 0; j < GridViewSW.Columns.Count; j++) 
     { 
      columnbind.Append(GridViewSW.Rows[i].Cells[j].Text + ","); 
     } 
     columnbind.Append("\r\n"); 
    } 



    Response.Output.Write(columnbind.ToString()); 
    Response.Flush(); 
    Response.End(); 

} 

правка

Я изменил код немного. Теперь у меня есть файл csv, и у него есть все данные, но когда я нажимаю кнопку, у него не появляется диалоговое окно с открытием или сохранением.

string fullSavePath = HttpContext.Current.Server.MapPath(string.Format("~/csv/Orders.csv")); 
     StreamWriter sr = new StreamWriter(fullSavePath); 

     DataSet ds = (DataSet)ViewState["source"]; 
     MyDateTime date = new MyDateTime(); 
     DataTableReader dr = ds.Tables[0].CreateDataReader(); 
     while (dr.Read()) 
     { 
      sr.Write(dr.GetValue(0) + "," + date.ConvertToDate(Convert.ToInt64(dr.GetValue(2))) + "," + date.ConvertToDate(Convert.ToInt64(dr.GetValue(3))) + "," + dr.GetValue(4) + "\r\n"); 
     } 
     sr.Flush(); 
     sr.Close(); 
     sr.Dispose(); 

     System.IO.FileInfo file = new System.IO.FileInfo(fullSavePath); 
     System.Web.HttpContext context = System.Web.HttpContext.Current; 
     System.Web.HttpResponse response = context.Response; 
     Response.Clear(); 
     Response.ClearHeaders(); 
     Response.ClearContent(); 
     Response.AddHeader("Content-Length", file.Length.ToString()); 
     Response.ContentType = "text/csv"; 
     Response.AddHeader("Content-Disposition", string.Format("attachment; filename =" + "Orders.csv"));    
     // Response.TransmitFile(fullSavePath); 
     Response.WriteFile(file.FullName);   
    //  Response.Flush(); 
     context.ApplicationInstance.CompleteRequest(); 
    // Response.End(); 
     // Response.Close(); 

ответ

0

Я считаю, что вам нужно изменить тип контента в «текст/CSV»

Response.ContentType = "text/csv"; 
+0

я изменился и по-прежнему та же проблема –

+0

Вы проверили, если 'columnbind.ToString()' имеет какие-либо данные, ? – CoOl

Смежные вопросы