2012-06-20 70 views
0

我從MS Excel導入數據。 我寫的代碼,從excel中導入數據的問題

var ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + 
    uploadfile.PostedFile.FileName + ";" + "Extended Properties=Excel 12.0;"; 
OleDbConnection objConn = new OleDbConnection(sConnectionString); 

objConn.Open(); 
try 
{ 
    var objCmdSelect = new OleDbCommand("select * from [Sheet1$]", objConn); 
} 

等。

我看起來很普通的我

的Microsoft Office Access數據庫引擎找不到對象「工作表Sheet1 $」的錯誤。請確保該對象存在並且,您拼寫其名稱和路徑名稱正確

*

我的工作表名稱的拼寫correclty 但我確認,我做了下面的代碼 DT = objConn.GetOleDbSchemaTable (OleDbSchemaGuid.Tables,null);

if(dt == null) 
{ 
    return null; 
} 

var excelSheets = new String[dt.Rows.Count]; 
int i = 0; 

// Add the sheet name to the string array. 
foreach(DataRow row in dt.Rows) 
{ 
    excelSheets[i] = row["TABLE_NAME"].ToString(); 
    i++; 
} 

* 但我得到了我的數據表無效。 我的問題是連接打開成功,但我無法從Excel文件中讀取數據。 是否需要特殊認證? 因爲我收到上述錯誤。

+0

數據源是數據庫的名稱,而不是excel表 –

回答

0

相反,如果Ace.OLEDB您可以通過Microsoft.Jet.OLEDB嘗試,因爲我面對的呈三角然後我切換到Jet.OLEDB

 
    string MyExelFile = "C:\Temp\Sample.xls"; 
    string MyExcelSheet = "[Sheet1$]"; 
    string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + MyExelFile + ";
Extended Properties=\"Excel 8.0; HDR=Yes; IMEX=1\""; String MySQLSelect = "select * from " + MyExcelSheet + ""; DataTable Items=new DataTable() ;

System.Data.OleDb.OleDbConnection Cn = new System.Data.OleDb.OleDbConnection(); Cn.ConnectionString = StrConn; System.Data.OleDb.OleDbDataAdapter Da = new System.Data.OleDb.OleDbDataAdapter (MySQLSelect, Cn); Cn.Open(); Da.Fill(Items); Cn.Close(); </pre>