win10:未在本地計算機上注冊“microsoft.ACE.oledb.12.0”提供程序


說明:C#以 oledb的方式讀取excel時,xls格式的文件讀取正常,但是xlsx格式的提示錯誤:未在本地計算機上注冊“microsoft.ACE.oledb.12.0”提供程序

解決辦法:

1、下載對應組件安裝:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255

注意:要選擇AccessDatabaseEngine.exe,而不是AccessDatabaseEngine64.exe,否則還會提示錯誤!!!

2、控制面板-管理工具中打開IIS(如果沒有,在控制面板-程序與功能-啟用或關閉windows功能-選擇IIS功能),設置如下

重新啟動

3、修改連接字符串

支持xls:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

支持xls和xlsx:strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES\"";

public static DataTable ReadExcelToTable(string path)
        {
            try
            {
                string strConn;
                // strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
                strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES\"";
                OleDbConnection OleConn = new OleDbConnection(strConn);
                OleConn.Open();
                String sql = "SELECT * FROM  [Sheet1$]";//可是更改Sheet名稱,比如sheet2,等等
 
                OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
                DataSet OleDsExcle = new DataSet();
                OleDaExcel.Fill(OleDsExcle, "Sheet1");
                OleConn.Close();
 
                return OleDsExcle.Tables["Sheet1"];
            }
            catch (Exception err)
            {
                MessageBox.Show("數據綁定Excel失敗!失敗原因:" + err.Message, "提示信息",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }

 


免責聲明!

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



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