匪以当地电脑达注册“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;
        }

 

相关文章