【问题标题】:Export DataTable to CSV File with "|" Delimiter使用“|”将 DataTable 导出为 CSV 文件分隔符
【发布时间】:2015-06-09 03:10:54
【问题描述】:

我正在构建一个 ASP.NET C# 项目,该项目具有将 DataTables 导出到 CSV 文件的功能,每个单元格都带有 | 分隔符。我希望它看起来像这样:

100001|06/19/1861|Jose|Rizal|Filipino|Calamba, Laguna| 100002|08/30/1850|Marcelo|Del Pilar|Filipino|| 100003||||||

如您所见,每个“单元格”由| 分隔。此外,空单元格也应该有分隔符。所有行都应具有相同数量的| 分隔符。

到目前为止,我有这个代码:

StringBuilder sb = new StringBuilder();
DataTable dtFile1 = file1BLO.SelectAllFile1();
foreach (DataRow dr in dtFile1.Rows)
{
      //build text file
}

【问题讨论】:

  • @GrantWinney 已编辑。不多。
  • 这不是 CSV。 CSV 是 "COMMA" 'S' 操作的 'V' 值。你用'|'分隔。
  • @jdweng 我知道 CSV 是什么。这是 CSV,但我通过使用 | 来实现它的不同实现。
  • 从技术上讲,您所拥有的是一个带有“|”的分隔文件(不是 CSV)作为分隔符。

标签: c# asp.net csv datatable export


【解决方案1】:

你可以试试:

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());

【讨论】:

  • 我会试一试。
  • 这可行,但它不会在行尾添加分隔符。
  • 我通过修改这一行来实现这一点:sb.AppendLine(string.Join("|", fields) + "|");
【解决方案2】:

我以前用过这个solution

我导出了 20 万条记录,大约需要 20 秒。

【讨论】:

  • 感谢您提供此资源!
【解决方案3】:

试试这个

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())) + "|");
            }

        }

    }
}

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 2014-08-14
    • 2016-03-13
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2014-02-26
    • 2021-01-17
    • 2018-04-01
    相关资源
    最近更新 更多