2012-07-30 63 views
0

我有两个具有相同列但名称不同的excel文件。与数据表的列匹配

我必须从源中找到列名,并为目标找到相同的列名。名字可以不同。我必须比较这些值以找出匹配的列名称。

例如一个excel工作表可以具有

Order ID Quantity Units 
--------- ------- -------- 
1022   7   55 

的另一个可以通过比较数据具有

Order ID Qty   Unt 
-------- -------- -------- 
1022   7   55 

所以,我知道,数量和数量是相同的,单位和UNT。

我使用数据适配器并通过读取excel工作表来填充两个数据表。 我想知道如何匹配两列,因为他们的ID是相同的(订单ID),并通过使用两个数据表进行比较。

string _basePath = @"C:\Users\Dev\Documents\Visual Studio 2010\Projects\Excel2\Excel2\"; 
    string _targetConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _basePath + "Target.xlsx" + ";Extended Properties=Excel 12.0;"; 
    string _sourceConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _basePath + "Source.xlsx" + ";Extended Properties=Excel 12.0;"; 

    var adapter = new OleDbDataAdapter("SELECT * FROM [Target$]", _targetConnStr); 
    var ds = new DataSet(); 
    adapter.Fill(ds, "targetTable"); 
    DataTable _targetDataTable = ds.Tables["targetTable"]; 

    adapter = new OleDbDataAdapter("SELECT * FROM [4028001$]", _sourceConnStr); 
    ds = new DataSet(); 
    adapter.Fill(ds, "sourceTable"); 
    DataTable _sourceDateTable = ds.Tables["sourceTable"]; 

     foreach (DataRow row in _targetDataTable.Rows) // Loop over the rows. 
     { 
      foreach (var item in row.ItemArray) // Loop over the items. 
      { 
       Console.WriteLine(item); 
      } 
     } 
+0

你说什么时候说“map two columns”? – 2012-07-30 19:13:49

+0

使用LINQ并在订单ID上执行两个表的连接。 – StarPilot 2012-07-30 19:18:33

+0

我必须从源中找到列名,并为目标找到相同的列名。名字可以不同。我必须比较这些值以找出匹配的列名称。 – SupaOden 2012-07-30 19:20:25

回答

0

如果您知道文件1使用的字段A,B,C和文件2使用的字段名称X,Y,Z,那么你可以在你的SELECT语句中使用的字段名称的别名。

例如:

SELECT OrderID as "Order ID", Quantity as "Quantity", Units as "Units" FROM [Target$] 

SELECT OrderID as "Order ID", Qty as "Quantity", as Unt "Units" FROM [4028001$] 

则两个结果集可以用相同的列名( “订单ID”, “数量”,和 “单元”)

被引用
+0

这是我不知道的,我必须在程序上找到匹配的列。 – SupaOden 2012-07-31 03:31:44

0

您可以使用列索引: _targetDataTable.Columns [0]与_sourceDateTable.Columns [0] _targetDataTable.Columns [1] with _sourceDateTable.Colu mns [1]第二列1是数量或数量 等等