我们如何合并多个csv文件?

时间:2015-06-24 17:38:22

标签: csv merge

每个CSV文件可以有超过1000个公共字段, 我们不能使用索引,因为字段可能不是相同的顺序, 字段在一个文件中没有值,但在其他文件中可以包含值。

1 个答案:

答案 0 :(得分:0)

你还没有说明你正在使用什么类型的应用程序......但我会在.NET中使用它并使用Dictionary对象。字典对象上的键是字段名称(这解决了你的不同顺序问题),每个字典项的值将是一个字符串列表(CSV真正起源于字符串)。

然后你可以枚举字典并将每个字符串的所有字符串连接成你想要的任何格式。

这还没有经过全面测试......但是应该让你开始:

    private void ReadCSVFiles (string[] filenames)
    {
        Dictionary<string, List<string>> data = new Dictionary<string, List<string>>();
        foreach (string filename in filenames)
        {
            string[] content = System.IO.File.ReadAllLines(filename);

            string[] fieldNames = content[0].Split(',');
            for (int i = 1; i < content.Length; i++)
            {
                string[] tokens = content[i].Split(',');
                for (int j = 0; j < fieldNames.Length; j++ )
                {
                    List<string> values = null;
                    if (!data.TryGetValue(fieldNames[j], out values))
                    {
                        values = new List<string>();
                        data.Add(fieldNames[j], values);
                    }
                    values.Add(tokens[j]);
                }
            }
        }
    }