【问题标题】:Merge 2 CSV Files into one CSV File将 2 个 CSV 文件合并为一个 CSV 文件
【发布时间】:2021-10-01 09:14:45
【问题描述】:

我需要将两个 CSV 文件合并为一个。

例如:CSV_FileOne

Key;Dutch
ERROR_LicenseNotFound;Error de licensie kan niet gevonden worden.
ERROR_LicenseIsEmpty;Error de licensiefile is leeg.

CSV_FileTwo

Key;Deutsch
ERROR_LicenseNotFound;Fehler die Lizenz kann nicht gefunden werden.
ERROR_LicenseIsEmpty;Fehler die Lizenzdatei ist leer.

所以结果应该是:

Key;Dutch;Deutsch
ERROR_LicenseNotFound;Error de licensie kan niet gevonden worden.;Fehler die Lizenz kann nicht gefunden werden.
ERROR_LicenseIsEmpty;Error de licensiefile is leeg.;Fehler die Lizenzdatei ist leer.

我必须这样做,因为我正在为一家荷兰公司制作程序。

希望你能帮帮我。

【问题讨论】:

  • 欢迎。你能告诉我们你已经尝试过什么以及你遇到了什么困难吗?
  • 您的预期结果的第 2 行是否必要?
  • @imsmn 我不知道该怎么做。但我已经完成的是一个网格(带有 Windows 窗体),您可以在其中放入 .CSV 文件。但我需要 3 列而不是 2。
  • @JSGarcia 是的。当然。这些文件是翻译文件。有上下文翻译总比没有翻译好。
  • 当然。但第 2 行:Key;Dutch 看起来像第二个标题,声明的字段与第一个标题中声明的字段完全相同。

标签: c# csv


【解决方案1】:

您可以加载您想要合并到内存中的文件,然后自行创建输出文件:

using System.IO;

// reading both csv files into memory
string[] left = File.ReadAllLines(pathToFile1);
string[] right = File.ReadAllLines(pathToFile2);

// opening stream + streamwriter
using (FileStream fs = new FileStream("", FileMode.Create))
using (StreamWriter sw = new StreamWriter(fs))
{
    for(int i = 0; i < left.Length; i++)
    {
        // in each line we take the entire line of left and append field 1 of right
        sw.WriteLine(left[i] + ";" + right[i].Split(';')[1];);
    }
    
}

请记住:这是一个快速而肮脏的解决方案。它期望两个文件具有完全相同的键顺序。您可以创建一个字典并通过键关联字符串以获得更强大的方法,但我会留下一些工作让您做

【讨论】:

  • 是的,你做到了。谢谢。
  • 这个答案很有帮助,
  • 非常有帮助!!!
猜你喜欢
  • 2019-10-11
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多