程序里面偶尔需要把 DataTable 转为为CSV,保存在本地文件夹里面,下面有一个简单的例子,如果写的不对请见谅。
public class CSVHelp
{
public static bool DatatableToCSV(DataTable dt , string idoc)
{
bool createFLAG = false;
try
{
StringBuilder sb = new StringBuilder();
string line = "";
if (dt != null && dt.Rows.Count > 0)
{
//table head
for (int i = 0; i < dt.Columns.Count; i++)
{
line += string.Format("\"{0}\",",dt.Columns[i].ColumnName);
}
line = line.TrimEnd(',');
sb.AppendLine(line);
//every row
foreach (DataRow row in dt.Rows)
{
line = "";
for (int j = 0; j < dt.Columns.Count; j++)
{
line += string.Format("\"{0}\",", row[j].ToString().Replace("\"", "\"\""));
}
line = line.TrimEnd(',');
sb.AppendLine(line);
}
//write file
//日志文件夹路径
string LogFileWJJ = AppDomain.CurrentDomain.BaseDirectory + "LogCSV";
if (File.Exists(LogFileWJJ) == false)
{
//不存在MyLog文件夹就创建
Directory.CreateDirectory(LogFileWJJ);
}
//当前日期的文件夹路径
string jinTianWJJ = LogFileWJJ + "\\" + DateTime.Now.ToString("yyyy-MM-dd");
if (File.Exists(jinTianWJJ) == false)
{
//不存在当前日期的文件夹就创建
Directory.CreateDirectory(jinTianWJJ);
}
//日志TXT文件
string csvName = jinTianWJJ + "\\" + idoc + ".csv";
File.WriteAllText(csvName, sb.ToString(), Encoding.UTF8);
}//end if
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return createFLAG;
}
}
使用如下
DataTable tb=new DataTable (); //读取出来的datatable
然后使用方法 CSVHelp.DatatableToCSV(tb,"name of file");