基础方法
public static StringBuilder GetCSVFormatData(DataTable dataTable) { StringBuilder StringBuilder = new StringBuilder(); // 写出表头 foreach (DataColumn DataColumn in dataTable.Columns) { StringBuilder.Append(DataColumn.ColumnName.ToString() + " , " ); } StringBuilder.Append( " \n " ); // 写出数据 foreach (DataRowView dataRowView in dataTable.DefaultView) { foreach (DataColumn DataColumn in dataTable.Columns) { StringBuilder.Append(dataRowView[DataColumn.ColumnName].ToString() + " , " ); } StringBuilder.Append( " \n " ); } return StringBuilder; }
导出csv
#region public static void ExportCSV(DataTable dataTable, string fileName) 导出CSV格式文件 /// <summary> /// 导出CSV格式文件 /// </summary> /// <param name="dataTable">数据表</param> /// <param name="fileName">文件名</param> public static void ExportCSV(DataTable dataTable, string fileName) { StreamWriter StreamWriter = new StreamWriter(fileName, false, System.Text.Encoding.GetEncoding("gb2312")); StreamWriter.WriteLine(GetCSVFormatData(dataTable).ToString()); StreamWriter.Flush(); StreamWriter.Close(); } #endregion
导入csv
public static DataTable ImportFromCsv(string filePath)//从csv读取数据返回table { //Encoding encoding = System.Data.Common.GetType(filePath); //Encoding.ASCII;// DataTable dt = new DataTable(); FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); //StreamReader sr = new StreamReader(fs, Encoding.UTF8); StreamReader sr = new StreamReader(fs, Encoding.Default); //记录每次读取的一行记录 string strLine = ""; //记录每行记录中的各字段内容 string[] aryLine = null; //标示列数 int columnCount = 0; //标示是否是读取的第一行 bool IsFirst = true; //逐行读取CSV中的数据 while ((strLine = sr.ReadLine().Trim()) != "") { DataRow dr = dt.NewRow(); aryLine = strLine.Split(','); if (IsFirst == true) { IsFirst = false; columnCount = aryLine.Length; //创建列 for (int i = 0; i < columnCount; i++) { DataColumn dc = new DataColumn(aryLine[i].ToString()); dt.Columns.Add(dc); } } else { for (int j = 0; j < columnCount; j++) { dr[j] = aryLine[j]; } dt.Rows.Add(dr); } } sr.Close(); fs.Close(); return dt; }