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;
            }
        }

自己從網上找的一些資料,整理了一下,測試也通過了,寫一份留着以後當資料

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