未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程序


1.使用OLEDB讀取Excel,本機調試正常,但是部署IIS上后,當點擊按鈕時,按鈕變灰,系統也沒捕獲異常。

  在瀏覽器中看到異常:未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程序

  百度搜索到問題原因是:Microsoft.Jet.OLEDB.4.0這個只能32位環境運行,服務器是64位。

 string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + allPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
 OleDbConnection connection = new OleDbConnection(connectionString);
 connection.Open();
 DataTable oleDbSchemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
 connection.Close();
 //默認讀取第一sheet
 OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT *  FROM [" + oleDbSchemaTable.Rows[0]["TABLE_NAME"].ToString() + "]"
                                , connectionString); DataSet dataSet = new DataSet(); adapter.Fill(dataSet, "ExcelInfo"); DataTable dt = dataSet.Tables[0];

2.解決辦法:

  方法一:更改IIS設置,啟用32位應用程序,這樣就可以兼容32位了。

  

 

   方法二:

    

第一步,先安裝

  Microsoft Access Database Engine 2010 Redistributable           

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D

  個人感覺如果系統office應該就不用再裝驅動了。

 

  第二步 修改連接

  原來連接 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"

  修改為:

  Provider=Microsoft.ACE.OLEDB.12.0;Data Source=1.xls;Extended Properties="Excel 12.0;HDR=YES;IMEX=1"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM