0

我有两个具有相同列但名称不同的 excel 文件。

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

例如,一张 excel 表可能有

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

另一个可以有

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

所以通过比较数据,我知道 Qty 和 Quantity 相同,Unit 和 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);
            }
        }
4

2 回答 2

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”、“数量”和“单位”)引用两个结果集

于 2012-07-30T19:15:22.260 回答
0

您可以使用列索引,即: _targetDataTable.Columns[0] 和 _sourceDateTable.Columns[0] _targetDataTable.Columns[1] 和 _sourceDateTable.Columns[1] 1 作为数量或数量的第二列等等

于 2012-07-30T19:18:55.537 回答