【问题标题】:Merge columns of two CSV files in C#.netC# - 将两个 CSV 文件或 DataGridView 合并为一个新文件。任何解决方案?
【发布时间】:2012-06-01 21:34:16
【问题描述】:

我一直在从事一个需要导入两个 .CSV 文件并将其合并的项目。
我已经使用CachedCsvReaderStreamReaderdataGridView1dataGridView2 中导入CSV1 和CSV2 文件,并且效果很好。现在我需要两个合并这两个dataGridView 或dataGridView3 中的CSV 文件。我在整个网络上尝试了许多不同的技术来解决它,但没有任何效果。
例如,我使用了Excel.Application、Workbook 和 Worksheet 的东西来解决它以及 dataGridView 方法,但没有任何效果。谁能帮帮我吗?!!真的会很感激!!顺便说一句,每列的标题写在标题名称下方,如A,B,C,名称在第一(1)行的下方。

为了您的方便,我在下面添加了我到目前为止所做的一小部分,

using (CachedCsvReader csv1 = new CachedCsvReader(new StreamReader(textBox1.Text), true))
{
    dataGridView1.DataSource = csv1;
}

在达米特先生的建议下,我这样做了:

OleDbConnection conn1 = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(textBox1.Text) +"; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");
         conn1.Open();
         OleDbDataAdapter adapter1 = new OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(textBox1.Text), conn1);
         DataSet ds1 = new DataSet("Temp"); 
         adapter1.Fill(ds1);
        // you can get datatable as bellow 
         DataTable tb1 = ds1.Tables[0];

         OleDbConnection conn2 = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(textBox2.Text) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");
         conn2.Open();
         OleDbDataAdapter adapter2 = new OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(textBox2.Text), conn2);
         DataSet ds2 = new DataSet("Temp");
         adapter2.Fill(ds2);
         // you can get datatable as bellow 
         DataTable tb2 = ds2.Tables[0];

        //Merge
         tb1.Merge(tb2);

        //View dataGridView 3
         dataGridView3.DataSource = tb1;
         dataGridView3.Update();

现在有了内容,点击下面的链接下载示例的文本文件。 Click here to download the .txt file

我希望这对你有帮助。 谢谢! -萨凡。

【问题讨论】:

  • 请用 csv 文件中的列更新问题以及合并后的期望
  • 我添加了一个包含示例的 .txt 文件的链接。我希望它会工作,谢谢!
  • 因为你有不同的模式,你不能使用合并。检查codeproject.com/Articles/37444/…,它将帮助您合并表格。
  • 您可以尝试使用 Altova Mapforce 来合并 CSV 文件。
  • 好的。谢谢!告诉我一件事,如果我需要访问一个列的标题和该列的内容(一个单元格也可以),我该怎么办?

标签: c# .net csv datagridview merge


【解决方案1】:

如果映射很困难,您始终可以构建所需的列并遍历 CSV 文件并手动添加每个单元格,这不需要太多编码。

循环 CSV1 将数据添加到适当的单元格。
循环 CSV2 将数据添加到适当的单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2011-03-27
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多