将完整的数据表一次导出到文本文件中

时间:2016-12-21 07:09:36

标签: c# datatable

我有datatable并将行方式数据导出到文本文件

foreach (DataRow dr in dt1.Tables[0].Rows)
{                
    WriteToFile("Docket with Docket number {0} and Request ID {1}   booked from Agent Account having Login ID {2} on {3}"+ dr["DOCKET_NUMBER"].ToString()+
       dr["REQUEST_ID"].ToString()+ dr["CREATED_BY"].ToString()+dr["CREATE_DATE"].ToString());
}

 private static void WriteToFile(string text)
{
        string path = "E:\\ServiceLog.txt";
        using (StreamWriter writer = new StreamWriter(path, true))
        {
            writer.WriteLine(string.Format(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt")+ "      "+ text));
           // writer.WriteLine(string.Format(text +));
            writer.Close();
        }
    }
}

我可以一次将整个datatable导出到文本文件吗?

4 个答案:

答案 0 :(得分:2)

您可以使用StringBuilder类及其方法,即AppendFormatAppendLine来读取所有行。之后只需调用方法WriteToFile

StringBuilder sb = new StringBuilder();
foreach (DataRow dr in dt1.Tables[0].Rows)
{                
    sb.AppendFormat("Docket with Docket number {0} and Request ID {1}   booked from Agent Account having Login ID {2} on {3}", dr["DOCKET_NUMBER"].ToString(), dr["REQUEST_ID"].ToString(), dr["CREATED_BY"].ToString(), dr["CREATE_DATE"].ToString());
    sb.AppendLine();
}
WriteToFile(sb);

答案 1 :(得分:1)

你可以这样做..

var lines = dt1.Tables[0].AsEnumerable().Select(dr => "Docket with Docket number {0} and Request ID {1}   booked from Agent Account having Login ID {2} on {3}" + dr["DOCKET_NUMBER"].ToString() +
       dr["REQUEST_ID"].ToString() + dr["CREATED_BY"].ToString() + dr["CREATE_DATE"].ToString());
File.WriteAllLines("YourFilePath",lines);

答案 2 :(得分:1)

写入xml怎么样? Xml是一个文本,因此符合条件。

使用DataTable.WriteXml方法进行书写,并使用DataTable.ReadXml方法从文本文件中读取数据。

答案 3 :(得分:0)

我从未将Datatable写入txt文件,但我建议您尝试使用ClosedXml并立即将Datatable写入csv文件。 ClosedXml是一个很棒的库,到目前为止我在生产中运行它没有问题,你应该查看他们的github页面,了解如何使用和/或扩展它。