2014-02-06 35 views
0

我想将数据从多个数据表CSV文件导出创建多个数据表CSV文件。在C#

我已经知道如何将一个数据表写入csv。

请任何帮助。 我有这个功能

public void CreateCSVFile(DataTable dt, string strFilePath) 
{ 
    try 
    { 
    StreamWriter sw = new StreamWriter(strFilePath, false); 
    int columnCount = dt.Columns.Count; 
    for (int i = 0; i < columnCount ; i++) 
    { 
     sw.Write(dt.Columns[i]); 
     if (i < columnCount - 1) 
     { 
     sw.Write(","); 
     } 
    } 
    sw.Write(sw.NewLine); 
    foreach (DataRow dr in dt.Rows) 
    { 
     for (int i = 0; i < columnCount ; i++) 
     { 
     if (!Convert.IsDBNull(dr[i])) 
     { 
      sw.Write(dr[i].ToString()); 
     } 
     if (i < columnCount - 1) 
     { 
      sw.Write(","); 
     } 
     } 
     sw.Write(sw.NewLine); 
    } 
    sw.Close(); 
    } 
    catch (Exception ex) 
    { 
    throw ex; 
    } 
} 

回答

0

只通过数据表报告的功能,并将其命名为将输出的报告文件。

 public void MyGetCSV(DataTable dtRecords,string strReportName) 
    { 
     string delimiter = ","; 
     StringBuilder csvGen = new StringBuilder(); 
     dtCutOffDate = GetLastMonthEndDate(); 
     dtFromDate= GetFromDate(); 
     int index = 0; 

     strReportName = string.Format(strReportName, GetTimeFormat(true,dtCutOffDate), GetTimeFormat(false,DateTime.Now)); 
     string strFilePath = string.Format("{0}{1}", GetReportGenerationPath(), strReportName); 

     if (!File.Exists(strFilePath)) 
     { 
      File.Create(strFilePath).Close(); 
     } 

     foreach (DataColumn column in dtRecords.Columns) 
     { 
      csvGen.Append(column.ColumnName.ToUpper().Trim()).Append(delimiter); 
     } 
     index = csvGen.ToString().LastIndexOf(','); 
     if (index > 0) 
     { 
      csvGen = csvGen.Remove(index,1); 
     } 
     csvGen.Append("\r\n"); 

     foreach (DataRow row in dtRecords.Rows) 
     { 
      foreach (DataColumn column in dtRecords.Columns) 
      { 
       csvGen.Append(row[column.ColumnName].ToString()).Append(delimiter); 
      } 
      csvGen.AppendLine(); 
      index = csvGen.ToString().LastIndexOf(','); 
      if (index > 0) 
      { 
       csvGen = csvGen.Remove(index, 1); 
      } 
     } 
     File.WriteAllText(strFilePath, csvGen.ToString()); 
    }