导出到CSV网站asp

时间:2015-08-14 11:58:30

标签: asp.net csv

我有一个GridView,当我点击导出按钮将我的数据导出为CSV。我点击按钮,它可以正确获取所有数据,但它没有显示任何内容,没有弹出窗口要求我打开或保存。

这是我的代码

 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();

1 个答案:

答案 0 :(得分:0)

我认为您需要将内容类型更改为“text / csv”

Response.ContentType = "text/csv";