【问题标题】:Appending multiple CSV's in c# [closed]在 C# 中附加多个 CSV [关闭]
【发布时间】:2014-10-20 20:45:55
【问题描述】:

我在一个文件夹中生成多个 CSV,我必须将它们全部合并并制作一个文件。

附: 1.它们都有相同的标题。 2.他们的名字不是固定的,会根据日期和其他一些参数每隔一天更改一次。

【问题讨论】:

  • 您将不得不编写代码。最简单的方法是google代码。您很有可能会获得所需的确切代码。

标签: c# csv merge


【解决方案1】:

没有真正测试过,但应该给你一个想法:

var allCsv = Directory.EnumerateFiles("Src-Path", ".*csv", SearchOption.TopDirectoryOnly);
string[] header = { File.ReadLines(allCsv.First()).First(l => !string.IsNullOrWhiteSpace(l)) };
var mergedData = allCsv
    .SelectMany(csv => File.ReadLines(csv)
        .SkipWhile(l => string.IsNullOrWhiteSpace(l)).Skip(1)); // skip header of each file
File.WriteAllLines("Dest-Path", header.Concat(mergedData));

请注意,您必须添加using System.Linq;

【讨论】:

  • 嗨,我使用的是 3.5 框架,所以无法使用 concat 和 readlines,我还能用什么来代替它? p.s.对c#不是很熟悉
  • @user3686917:您可以将 LINQ 与 .NET 3.5 一起使用,但您不能使用接受 IEnumerable<string>WriteAllLInes 的重载,您必须使用 string[]。因此使用File.WriteAllLines("Dest-Path", header.Concat(mergedData).ToArray());
  • 但是你是对的,File.ReadLinesDirectory.EnumerateFiles 在 .NET 4 中也是新的,所以你需要 File.ReadAllLinesDirectory.GetFiles,它们在内存消耗方面效率较低。跨度>
  • WriteallLines 我认为不会在 3.5 中产生任何问题,如果我们像 File.WritAllLines("Destpath",header.Concat(mergedData.ToArray())) 那样使用它,如果我错了请纠正我
  • @user3686917:没问题,看看我倒数第二条评论;-)
猜你喜欢
  • 2015-11-18
  • 2014-12-17
  • 1970-01-01
  • 2020-01-08
  • 2020-02-17
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多