天天看點

連接配接Excel檔案時,未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程式問題與解決有關XLS與XLSX版本的連接配接字元串設定

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

1

<code>string</code> <code>strCon = </code><code>" Provider = Microsoft.Jet.OLEDB.4.0 ; "</code> <code>+ </code><code>"Data Source ="</code> <code>+ excelFileName + </code><code>";Extended Properties=Excel 8.0"</code><code>;</code>

 解決方案是:

将生成類型改為x86。具體來講就是在項目的 “屬性”那裡, 目标平台由原有的“Any CPU” 修改為 “x86” 重新編譯。

使用 Microsoft.Jet.OLEDB.4.0; 如果 Excel 檔案名 的擴充名為 xlsx,那麼代碼運作過程中,會報  “不能更新。資料庫或對象為隻讀。” 的錯誤。

如果使用 Microsoft.ACE.OLEDB.12.0,擴充名為 xlsx 的時候則不産生錯誤。是以,C#産生報表的時候,優先使用 Microsoft.ACE.OLEDB.12.0 驅動, 當目标機器無法啟用 Microsoft.ACE.OLEDB.12.0 的時候,才使用 Microsoft.Jet.OLEDB.4.0 驅動 。

此時連接配接字元串改為:

<code>String sConnectionString = </code><code>"Provider=Microsoft.ACE.OLEDB.12.0;"</code> <code>+ </code><code>"Data Source="</code> <code>+ excelFileName + </code><code>";Extended Properties=Excel 8.0;"</code><code>;</code>

需要注意的是,上面的驅動,能夠成功的建立 xlsx 檔案,但是用 Excel 打開的時候,會提示錯誤資訊。驅動需要修改為:

<code>sConnectionString  = </code><code>"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="</code>  <code>+ excelFileName + </code><code>";Extended Properties=\"Excel 12.0 Xml;HDR=YES\""</code><code>;</code>

即:

修改的地方 Extended Properties=\"Excel 12.0 Xml;HDR=YES\"。 與以前的  Extended Properties=Excel 8.0, 僅僅當擴充名為   xlsx  的時候, 才使用上面那個驅動的寫法。如果擴充名還是  xls  那麼還是繼續使用 原有的寫法,也就是那個 Extended Properties=Excel 8.0 的

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/5849831.html,如需轉載請自行聯系原作者