您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将DataTable转换为CSV流

将DataTable转换为CSV流

您可以自己快速写一些东西:

public static class Extensions
{
    public static string ToCSV(this DataTable table)
    {
        var result = new StringBuilder();
        for (int i = 0; i < table.Columns.Count; i++)
        {
            result.Append(table.Columns[i].ColumnName);
            result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
        }

        foreach (DaTarow row in table.Rows)
        {
            for (int i = 0; i < table.Columns.Count; i++)
            {
                result.Append(row[i].ToString());
                result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
            }
        }

        return result.ToString();
    }
}

并测试:

  public static void Main()
  {
        DataTable table = new DataTable();
        table.Columns.Add("Name");
        table.Columns.Add("Age");
        table.Rows.Add("John Doe", "45");
        table.Rows.Add("Jane Doe", "35");
        table.Rows.Add("Jack Doe", "27");
        var bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(table.ToCSV());
        MemoryStream stream = new MemoryStream(bytes);

        StreamReader reader = new StreamReader(stream);
        Console.WriteLine(reader.ReadToEnd());
  }

编辑:关于您的评论

这取决于您要csv格式化的方式,但是通常情况下,如果文本包含特殊字符,则要用双引号将其括起来,即:“ my,text”。您可以在创建csv的代码添加检查以检查特殊字符,如果有的话,则将文本用双引号引起来。至于.NET 2.0,只需在您的类中将其创建为帮助方法,或在方法声明中删除this并按如下方式调用它即可:Extensions.ToCsv(table);

其他 2022/1/1 18:15:07 有526人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶