簡體   English   中英

動態解析 Excel 表(未提供單元格范圍,因為表中數據的位置可能會動態變化)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM