在 C# 中从多个数据表创建 csv 文件

Posted

技术标签:

【中文标题】在 C# 中从多个数据表创建 csv 文件【英文标题】:create csv file from multiple datatables in c# 【发布时间】:2014-02-06 06:54:16 【问题描述】:

我想将多个数据表中的数据导出到csv文件。

我已经知道如何将一个数据表写入 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;  
     
   

【问题讨论】:

【参考方案1】:

只将数据表传递给函数和报表名称,它会输出一个报表文件。

     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("01", 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());
    

【讨论】:

【参考方案2】:

你可以追加到同一个文件。

StreamWriter constructor allowing you to append

Other question regarding this

【讨论】:

以上是关于在 C# 中从多个数据表创建 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中从 CSV 文件创建混合图表

在 Python 中从 CSV 文件创建混合图表

在 C# 中从 Informix 表创建类

我可以在 python3 中从 excel 文件(不是 CSV)创建字典吗?

在python中从多个JSON文件中提取信息到单个CSV文件

在 python 中从模板文件和 csv 数据生成输出文件