Запись строк из 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);
}
}
}
Не уверен, что мне здесь не хватает, но я думаю, что это может быть имя столбца, которое я не уверен, как его настроить.
это работает нормально, за исключением того, что при записи в текстовый файл он пишет это:
5 ответов
при попытке распечатать DataRow
вот так, он вызывает Object.ToString()
, который просто печатает имя типа. Что вы хотите сделать, это что-то вроде:
sw.WriteLine(String.Join(",", row.ItemArray));
выводит разделенный запятыми список всех элементов в элементе DataRow
.
приведенный ниже код позволит вам написать текстовый файл каждого столбца, разделенных '|'
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());
}
для 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();
}
вам нужно написать столбцы из каждого DataRow. В настоящее время вы пишете объект DataRow, который является dataRow.ToString (), следовательно, вы получаете имя строки "System.Data.DataRow"
of dataRow в вашем файле
foreach(DataRow row in table.Rows)
{
foreach(DataColumn column in table.Columns)
{
sw.WriteLine(row[column]);
}
}