在 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 python3 中从 excel 文件(不是 CSV)创建字典吗?