导出到CSV网站asp



我有一个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("rn");
    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("rn");
    }

    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) + "rn");
        }
        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();

我认为你需要改变你的内容类型为"text/csv"

Response.ContentType = "text/csv";

最新更新