• 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序


    错误信息:未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序。

    解决办法: http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe下载并安装。

    报错原因:由于使用的是ACCESS2007版本建立的数据库,但服务器中没有相配合使用的程序,所以出错。

    错误信息:未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序。

    解决办法: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    错误信息:异常详细信息: System.InvalidOperationException: 未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序。

    解决办法:下载2007 Office system 驱动程序:数据连接组件安装http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

    此下载将安装一组组件,非 Microsoft Office 应用程序可以使用它们从 2007 Office system 文件中读取数据,例如从 Microsoft Office Access 2007(mdb 和 accdb)文件以及 Microsoft Office Excel 2007(xls、xlsx 和 xlsb)文件中读取数据。这些组件还支持与 Microsoft Windows SharePoint Services 和文本文件建立连接。此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。

    如果您是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为"Microsoft.ACE.OLEDB.12.0"。如果要连接到 Microsoft Office Excel 数据,请将"Excel 12.0"添加到 OLEDB 连接字符串的扩展属性中。

    如果您是使用 ODBC 连接到 Microsoft Office Access 数据的应用程序开发人员,请将连接字符串设置为"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file"

    如果您是使用 ODBC 连接到 Microsoft Office Excel 数据的应用程序开发人员,请将连接字符串设置为"Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file"详情:http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

    或者:解决办法1 (验证可以了)

      选择 该应用程序的 应用程序池 ------>选择高级设置 --------->启用32位应用程序 ------->true

    解决办法2

      Microsoft.ACE.OLEDB.12.0是不能再x64上使用的,你要强制把你的web application编译成x86再发布到Win08 x64上,记得在Application pool上设置Enable 32bit Application = true。(没有验证)

    操作代码:

            private void openToolStripMenuItem_Click(object sender, EventArgs e)
            {
                OpenFileDialog openDialg= new OpenFileDialog();
                //openDialg.ShowDialog();
                openDialg.InitialDirectory="C:\Users\Administrator\Desktop";
                openDialg.Filter="Excel Files(2003-2007)|*.xls|Excel File(*.xlsx)|*.xlsx|All files (*.*)|*.*";
                openDialg.Title="打开Excel文件";
                openDialg.FilterIndex=0;
                openDialg.RestoreDirectory=true;
                
                OleDbDataAdapter da;
                DataSet ds=new DataSet();
    
                if(openDialg.ShowDialog()==DialogResult.OK)
                {
                    if (string.IsNullOrEmpty(openDialg.FileName))
                    {
                        MessageBox.Show("请选择Excel文件!");
                        DT=null;
                    }
                    else
                    {
                        try{
                            string FileName=openDialg.FileName.Substring(openDialg.FileName.LastIndexOf('.'));
                            string connStr="";
                            switch(FileName)
                            {
                                case ".xls":
                                    {
                                        connStr = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + openDialg.FileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
                                        break;
                                    }
                                case ".xlsx":
                                    {
                                        connStr = "Provider=Microsoft.Ace.OLEDB.12.0;data source=" + openDialg.FileName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
                                        break;
                                    }
                                default:
                                    {
                                        connStr = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + openDialg.FileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
                                        break;
                                    }
                            }
                            //Excel数据读入之后将他存储到DataTable中
                            string sql="select * from["+GetExcelFirstTableName(openDialg.FileName,connStr)[0].ToString().Trim()+"]";
                            OleDbConnection con=new OleDbConnection(connStr);
                            con.Open();
                            da=new OleDbDataAdapter(sql,con);
                            da.Fill(ds);
                            if(ds.Tables[0].Rows.Count==0)
                            {
                                //打开的文件内容为空,则继续保持DataTable为空
                                MessageBox.Show("选择的文件中没有数据");
                                DT=null;
                            }
                            else
                            {
                                // 打开文件不为空
                                DT=ds.Tables[0];
                                //在DataGridviewe中显示DT
                                this.dataGridView_Excel.DataSource=DT;
                            }
                            //return DT;
                        }
                        catch(Exception exp)
                        {
                            MessageBox.Show(exp.Message.ToString());
                            //return DT;
                            //this.dataGridView_Excel.DataSource=DT;
                            //this.dataGridView_Excel.Rows.Add(DT.Rows[0].)
                            //while(this.dataGridView_Excel.Rows)
                        }
    
    
    
    
                    //StreamReader sr=File.OpenText(openDialg.FileName);
                    //while(sr.EndOfStream!=true)
                    //{
                    //    FileStream filestream = new FileStream();
                    //    IFileReaderService 
                    //}
                }
            }
        }
    /// <summary>
            /// 获取第一个Sheet的名称
            /// </summary>
            /// <param name="excelFileName">Excel文件名称</param>
            /// <param name="strExtension">读取Excel文件数据的数据连接</param>
            /// <returns></returns>
            private static ArrayList GetExcelFirstTableName(string excelFileName, string strExtension)
            {
                ArrayList tablenameList = new ArrayList();
                try
                {
                    if (File.Exists(excelFileName))
                    {
                        using (OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strExtension))
                        {
                            conn.Open();
                            DataTable DT = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                            tablenameList.Add(DT.Rows[0][2].ToString().Trim());
                            return tablenameList;
                        }
                    }
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.Message.ToString());
                }
                return tablenameList;
            }
  • 相关阅读:
    第十九章:UTC time和local time的互换
    第二十章:安全性
    第十三章:基于socket.io实现即时通信
    第三章:ionic环境搭建之windows篇
    第十八章:自定义splash screen、app icon和tab icon
    第十七章:使用media插件来播放声音
    第一章:hybrid app开发之技术选型
    第十六章:自定义push notification sound
    第十五章:集成JPUSH
    ionic resources
  • 原文地址:https://www.cnblogs.com/AmatVictorialCuram/p/5062628.html
Copyright © 2020-2023  润新知