简体   繁体   English

从c#中的多个数据表创建csv文件

[英]create csv file from multiple datatables in c#

i want to export data from multiple datatables to csv file. 我想将数据从多个数据表导出到csv文件。

i already know how to write one datatable to csv. 我已经知道如何将一个数据表写入csv。

any help please. 请任何帮助。 i have this function 我有这个功能

 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;  
   }  
 }  

only pass the data table to the function and name of report it will output a report file. 仅将数据表传递给报告的函数和名称,它将输出报告文件。

     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());
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM