.cs文件直接貼代碼:

using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; public class DataToCsv { public DataToCsv() { } /// <summary> /// 將DataTable導出CSV表格 /// </summary> /// <param name="dataTable">DataTable數據源</param> /// <param name="ColumnName">標題列(英文逗號","分割)</param> /// <param name="ColumnValue">內容列參數名稱</param> /// <param name="CsvName">導出的CSV表格名稱</param> /// <returns></returns> public static StringBuilder Data_To_Csv(DataTable dataTable, string ColumnName, string[] ColumnValue, string CsvName) { DataTable dt = dataTable; try { StringWriter swCSV = new StringWriter(); //列名 swCSV.WriteLine(ColumnName);//"工單編號,工單標題,工單類型,創建時間,當前狀態,當前節點名稱,當前處理人" //遍歷datatable導出數據 foreach (DataRow drTemp in dt.Rows) { StringBuilder sbText = new StringBuilder(); for (int i = 0; i < ColumnValue.Length; i++) // ---------- 字段循環 { sbText = AppendCSVFields(sbText, drTemp[ColumnValue[i].ToString()].ToString()); } //去掉尾部的逗號 sbText.Remove(sbText.Length - 1, 1); //寫datatable的一行 swCSV.WriteLine(sbText.ToString()); } swCSV.Close(); return swCSV.GetStringBuilder(); } catch (Exception ex) { throw ex; } } /// <summary> /// csv添加逗號 用來區分列 /// </summary> /// <param name="argFields">字段</param> /// <returns>添加后內容</returns> public static StringBuilder AppendCSVFields(StringBuilder argSource, string argFields) { return argSource.Append(argFields.Replace(",", " ").Trim()).Append(","); } /// <summary> /// 彈出下載框 /// </summary> /// <param name="argResp">彈出頁面</param> /// <param name="argFileStream">文件流</param> /// <param name="strFileName">文件名</param> 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; } } }
調用示例:
DataSet ds = (DataSet)Session["data"]; DataTable dt = ds.Tables[0]; string[] values = { "S_ID", "S_Name", "S_Grade", "S_Class" }; DataToCsv.DownloadFile(Response, DataToCsv.Data_To_Csv(dt, "學號,姓名,年級,班級", values, ViewState["Title"].ToString() + "報名表"), ViewState["Title"].ToString() + "報名表.csv"); Response.End();