我有两个具有相同列但名称不同的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 :(得分: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”,“数量”和“单位”)
答案 1 :(得分:0)
您可以使用以下列索引: 带有_sourceDateTable.Columns [0]的_targetDataTable.Columns [0] _targetDataTable.Columns [1]与_sourceDateTable.Columns [1] 1用于第二列,即数量或数量 等等