[英]Parse Excel sheet dynamically (cells range not provided, as the location of data in sheet may dynamically vary)
我在 Win 7 機器上的 VS2010 中使用 C#.NET 3.5。 我有一張 Excel 表,我想提取其中存儲的數據。 我知道在給定單元格范圍時如何解析 Excel 。 這里我們使用 OLEDB 進行連接,將 SQL 命令和 map 傳遞給DataTable
,然后訪問數據。
select * from [sheetname$A2:N50]
其中“sheetname”是 Excel 工作表的名稱,“$A2:N50”是單元格的范圍。
但是,但是,我的要求完全不同。
我不能像上面那樣對單元格范圍進行硬編碼,因為數據單元格的位置可能會動態變化。 例如:存儲在單元格 A20 中的數據可能會在下一次執行中更改為 C14。
我需要根據一些關鍵字搜索來解析我的 Excel 表。 我的意思是我應該搜索關鍵字“XYZ”,然后解析它下面的表格。 此關鍵字可能會在每次執行時更改其 position。
由於我不知道單元格范圍,因此我什至無法使用上述查詢將 Excel 數據放入DataTable
中。
您可以將所有數據填充到數據表中並從中查詢,而不是從單元格范圍中進行選擇。
DataTable dt = new DataTable();
try
{
OleDbConnection con = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=yes;IMEX=1""", excelPath));
OleDbDataAdapter da = new OleDbDataAdapter("select * from [sheetname$]", con);
da.Fill(dt);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
//now you can use dt DataTable
foreach (DataRow dr in dt.Rows)
{
//....
}
希望這可以幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.