将数据从DataTable写入文本文件

RJ.*_*RJ. 9 c# datatable

public void GenerateDetailFile()
{
  if (!Directory.Exists(AppVars.IntegrationFilesLocation))
  {
    Directory.CreateDirectory(AppVars.IntegrationFilesLocation);
  }

  DateTime DateTime = DateTime.Now;
  using (StreamWriter sw = File.CreateText(AppVars.IntegrationFilesLocation +
                                DateTime.ToString(DateFormat) + " Detail.txt"))
  {
    DataTable table = Database.GetDetailTXTFileData();

    foreach (DataRow row in table.Rows)
    {
      sw.WriteLine(row);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不知道我在这里缺少什么,但我认为它可能是列名,我不知道如何设置它.

这工作正常,除了当它写入文本文件时,它正在写这个:

System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow

任何人都可以帮我一把吗?

Eri*_*ric 19

当您尝试打印出DataRow类似的内容时,它正在调用Object.ToString(),它只是打印出类型的名称.你想做的是:

sw.WriteLine(String.Join(",", row.ItemArray));
Run Code Online (Sandbox Code Playgroud)

这将打印以逗号分隔的列表中的所有项目DataRow.


Mic*_*ael 8

就像是:

sw.WriteLine(row["columnname"].ToString());
Run Code Online (Sandbox Code Playgroud)

会更合适.


Law*_*ine 5

下面的代码将让你写出文本文件,每列用'|'分隔

    foreach (DataRow row in dt.Rows)
      {  
         object[] array = row.ItemArray;
         for (int i = 0; i < array.Length - 1; i++)
         {
           swExtLogFile.Write(array[i].ToString() + " | ");
         }
          swExtLogFile.WriteLine(array[array.Length - 1].ToString());             
     }
Run Code Online (Sandbox Code Playgroud)

参考链接