2012-07-30 49 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是數量或數量 等等