使用“|”将 DataTable 导出到 CSV 文件定界符
Export DataTable to CSV File with "|" Delimiter
我正在构建一个 ASP.NET C# 项目,该项目具有将数据表导出到 CSV 文件的功能,每个单元格都有一个 |
分隔符。我希望它看起来像这样:
100001|06/19/1861|Jose|Rizal|Filipino|Calamba, Laguna|
100002|08/30/1850|Marcelo|Del Pilar|Filipino||
100003||||||
如您所见,每个 'cell' 由 |
分隔。此外,空单元格也应该有分隔符。所有行应具有相同数量的 |
分隔符。
到目前为止我有这个代码:
StringBuilder sb = new StringBuilder();
DataTable dtFile1 = file1BLO.SelectAllFile1();
foreach (DataRow dr in dtFile1.Rows)
{
//build text file
}
你可以试试:
StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join("|", columnNames));
foreach (DataRow row in dt.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join("|", fields));
}
File.WriteAllText("test.csv", sb.ToString());
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
namespace ConsoleApplication33
{
class Program
{
const stating FILENAME = @"c:\temp\test.txt";
static void Main(string[] args)
{
DataTable dtFile1 = new DataTable();
StreamWriter writer = new StreamWriter(FILENAME);
foreach (DataRow row in dtFile1.AsEnumerable())
{
writer.WriteLine(string.Join("|", row.ItemArray.Select(x => x.ToString())) + "|");
}
}
}
}
我以前用这个solution。
我导出了20万条记录,大概用了20秒。
我正在构建一个 ASP.NET C# 项目,该项目具有将数据表导出到 CSV 文件的功能,每个单元格都有一个 |
分隔符。我希望它看起来像这样:
100001|06/19/1861|Jose|Rizal|Filipino|Calamba, Laguna|
100002|08/30/1850|Marcelo|Del Pilar|Filipino||
100003||||||
如您所见,每个 'cell' 由 |
分隔。此外,空单元格也应该有分隔符。所有行应具有相同数量的 |
分隔符。
到目前为止我有这个代码:
StringBuilder sb = new StringBuilder();
DataTable dtFile1 = file1BLO.SelectAllFile1();
foreach (DataRow dr in dtFile1.Rows)
{
//build text file
}
你可以试试:
StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join("|", columnNames));
foreach (DataRow row in dt.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join("|", fields));
}
File.WriteAllText("test.csv", sb.ToString());
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
namespace ConsoleApplication33
{
class Program
{
const stating FILENAME = @"c:\temp\test.txt";
static void Main(string[] args)
{
DataTable dtFile1 = new DataTable();
StreamWriter writer = new StreamWriter(FILENAME);
foreach (DataRow row in dtFile1.AsEnumerable())
{
writer.WriteLine(string.Join("|", row.ItemArray.Select(x => x.ToString())) + "|");
}
}
}
}
我以前用这个solution。
我导出了20万条记录,大概用了20秒。