Skip to content
chen shucheng edited this page Aug 2, 2017 · 1 revision
 public void DataTableToCsv(DataTable dt, string fileName)
        {
            //Clear <div  id="loading" ..
            HttpContext.Current.Response.Clear();

            #region Export Grid to CSV
            System.IO.StringWriter sw = new System.IO.StringWriter();

            int iColCount = dt.Columns.Count;
            //string columnsName = string.Empty;
            for (int i = 0; i < iColCount; i++)
            {
                //columnsName = dt.Columns[i].ToString();
                sw.Write("\"" + dt.Columns[i] + "\"");
                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
            // Now write all the rows.
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                        sw.Write("\"" + dr[i].ToString().Replace("\r","").Replace("\n","").Replace("\t","").Replace("\v","") + "\"");
                    else
                        sw.Write("\"\"");

                    if (i < iColCount - 1)
                    {
                        sw.Write(",");
                    }
                }
                sw.Write(sw.NewLine);
            }
            sw.Close();
            #endregion

            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + string.Format("{0:yyyyMMddhhmmss}", DateTime.Now) + ".csv");
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
            HttpContext.Current.Response.Write(sw);
            HttpContext.Current.Response.End();
        }
Clone this wiki locally