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;
}
}
自己從網上找的一些資料,整理了一下,測試也通過了,寫一份留着以後當資料