C# - 将两个CSV文件或DataGridView合并为一个新文件。任何方案?

时间:2012-05-26 19:10:19

标签: c# .net csv datagridview merge

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

为方便起见,我正在添加我到目前为止所做的小部分,

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

在Damith先生的建议之后,我这样做了:

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

我希望这对你有所帮助。 谢谢! -Saffan。

1 个答案:

答案 0 :(得分:0)

如果难以进行映射,您可以随时构建所需的列并迭代CSV文件并手动添加每个单元格,不需要太多编码。

循环CSV1将数据添加到正确的单元格 循环CSV2将数据添加到正确的单元格。