asp.net导出CSV

 public void ExportCSV() {
            Test users = new Test();
            DataTable dt = users.GetAll();//测试方法
            try
            {
                StringWriter swCSV = new StringWriter();
                //标题

                swCSV.WriteLine("用户名,密码,注册日期");

                  foreach (DataRow drTemp in dt.Rows)
                {
                    StringBuilder sbText = new StringBuilder();
                    sbText = AppendCSVFields(sbText, drTemp["UserName"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["Pwd"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["RegistDate"].ToString());

                    //去掉尾部的逗号
                    sbText.Remove(sbText.Length - 1, 1);

                    //写datatable的一行
                    swCSV.WriteLine(sbText.ToString());
                }
                //下载

                DownloadFile(Response, swCSV.GetStringBuilder(), "ExportCSV.csv");

                swCSV.Close();
                Response.End();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private StringBuilder AppendCSVFields(StringBuilder argSource, string argFields)
        {
            return argSource.Append(argFields.Replace(",", " ").Trim()).Append(",");
        }

        public static void DownloadFile(HttpResponse argResp, StringBuilder argFileStream, string strFileName)
        {
            try
            {
                string strResHeader = "attachment; filename=" + Guid.NewGuid().ToString() + ".csv";
                if (!string.IsNullOrEmpty(strFileName))
                {
                    strResHeader = "inline; filename=" + strFileName;
                }
                argResp.AppendHeader("Content-Disposition", strResHeader);//attachment说明以附件下载,inline说明在线打开
                argResp.ContentType = "application/ms-excel";
                argResp.ContentEncoding = Encoding.GetEncoding("GB2312"); // 编码格式如果设置成Encoding.UTF8会出现乱码
                argResp.Write(argFileStream);

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

自己从网上找的一些资料,整理了一下,测试也通过了,写一份留着以后当资料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章