2010-05-18 79 views
0

我想從asp.net中的excel文件中讀取數據。我已經加入了連接字符串webConfig文件:連接字符串讀取數據從asp.net中的excel

<add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=HPM_DB.xls;Extended Properties=Excel 8.0"/> 

但它顯示我的errormessage的,當我運行此查詢:「從[IO_Definition $]選擇*」

查詢字符串=;

IO_Definition是我excel文件中電子表格的名稱。我還將excel文件添加到網站的App_Data文件夾中。

的錯誤是:

Microsoft Jet數據庫引擎找不到對象 'IO_Definition $'。確保對象存在,並且正確拼寫其名稱和路徑名。

問題是,當我在連接字符串中寫入excel文件的絕對路徑時,它確實有效。無論如何,我可以讓它工作而不寫絕對路徑?

感謝,

格雷格

+0

沒有人知道嗎?:( – Greg 2010-05-18 08:25:48

回答

3

這裏的問題是,這種「文件」的連接,OLEDB提供程序的需要,因爲你已經找到了,絕對路徑的文件。 歷史,我們已經做到了這一點與Server.MapPath,在這種情況下你會做這樣的事情:

<connectionstrings> 
    <add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;"/> 
</connectionstrings> 

String connString; 
OleDbConnection conn; 

connString = Web.Configuration.WebConfigurationManager.ConnectionStrings["xls"].ConnectionString; 
connString = connString + Server.MapPath("~/App_Data/HPM_DB.xls"); 

conn = new OleDbConnection(connString); 

conn.Open(); 
... 

其作品,但你需要或者做的一切,每次要打開一個連接和查詢數據,或將其分解成連接工廠類。

一個更合適的方法來做到這一點是這樣的:

<connectionstrings> 
    <add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; 
    Data Source=|DataDirectory|\HPM_DB.xls;"/> 
</connectionstrings> 

OleDbConnection conn; 

conn = new OleDbConnection(Web.Configuration.WebConfigurationManager.ConnectionStrings["xls"].ConnectionString); 
conn.Open(); 
... 

在運行時,|DataDirectory|令牌在連接字符串作爲宏其中默默地做所有的東西Server.MapPath你。

+0

謝謝!!這個伎倆!:D – Greg 2010-05-23 08:08:14