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);
}
}
}
不确定我在这里缺少什么,但我认为它可能是列名,我不知道如何设置它。
这样工作正常,但是当它写入文本文件时,它写的是:
的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
任何人都可以帮我一把吗?
答案 0 :(得分:17)
当您尝试打印出类似的DataRow
时,它正在调用Object.ToString()
,它只打印出该类型的名称。你想做的是:
sw.WriteLine(String.Join(",", row.ItemArray));
这将打印逗号分隔的DataRow
。
答案 1 :(得分:8)
类似的东西:
sw.WriteLine(row["columnname"].ToString());
会更合适。
答案 2 :(得分:5)
下面的代码将让您编写文本文件,每列由' |'分隔。
foreach (DataRow row in dt.Rows)
{
object[] array = row.ItemArray;
for (i = 0; i < array.Length - 1; i++)
{
swExtLogFile.Write(array[i].ToString() + " | ");
}
swExtLogFile.WriteLine(array[i].ToString());
}
答案 3 :(得分:3)
DataRow没有“自然”字符串表示。您需要以您想要的任何格式写出它,即以逗号分隔的值列表等。您可以枚举列并打印它们的值,例如:
foreach (DataRow row in table.Rows)
{
bool firstCol = true;
foreach (DataColumn col in table.Columns)
{
if (!firstCol) sw.Write(", ");
sw.Write(row[col].ToString());
firstCol = false;
}
sw.WriteLine();
}
答案 4 :(得分:1)
您需要从每个DataRow写入列。目前您正在编写DataRow对象dataRow.ToString(),因此您在文件中获得dataRow的字符串名称"System.Data.DataRow"
foreach(DataRow row in table.Rows)
{
foreach(DataColumn column in table.Columns)
{
sw.WriteLine(row[column]);
}
}