2010-01-06 88 views
0

我有一個結構如下的excel文件。 我想從這個文件中讀取數據。有兩種方法可以做到這一點: - 使用OLEDB加載到數據庫。但在這種情況下,似乎不能這樣做。從excel文件加載數據

 String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ExcelFileName + ";" + "Extended Properties=Excel 8.0;"; 

     OleDbConnection objConn = new OleDbConnection(sConnectionString); 
     objConn.Open(); 
     OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn); 
     OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); 
     objAdapter1.SelectCommand = objCmdSelect; 

     DataSet objDataset1 = new DataSet(); 
     objAdapter1.Fill(objDataset1); 
  • 使用Excel對象。在這種情況下,我怎麼知道最後一個有數據的單元格?

alt text http://img31.imageshack.us/img31/6736/unstructureexcel.png

由於

+0

什麼版本的Excel文件,和哪個版本的C#? – 2010-01-06 04:06:37

+0

通過「ActiveSheet.UsedRange」循環.http://www.pcreview.co.uk/forums/thread-954253.php – whunmr 2010-01-06 04:13:16

回答

0

與OLEDB的困難是片材具有三個標題行。因此,您需要指定排除標題的範圍。

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$A4:E65535]", objConn); 

即使您爲範圍指定了最大行值,它也只會讀取可用數據。

如果這對您有用,它將比Excel自動化更快更簡單。

0

它看起來像你只是用它來加載數據到數據庫(我假設SQL Server?)你應該看看使用SSIS(SQL Server集成服務)加載Excel文件。

here is a link to help you further