2017-02-23 错误信息:未在本地计算机上注册“Microsoft.ACE.oledb.12.0”提供程序。

时间:2021-12-31 00:54:39

问题如题,解决办法:去

http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe下载。

然后安装就行了。

这个错误经常在进行Excel读取操作时遇到,这是由于默认安装的Office中缺少AccessDatabase引擎,关于AccessDatabase引擎的介绍:

Microsoft Access Database Engine 2010 也称Microsoft Access 2010 数据库引擎可再发行程序包,该程序用于帮助在 2010 Microsoft Office System 文件与非 Microsoft Office 应用程序之间传输数据。 此下载将安装一系列组件,帮助在现有的 Microsoft Office 文件(例如 Microsoft Office Access 2010(*.mdb 和 *.accdb)文件和 Microsoft Office Excel 2010(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 Microsoft SQL Server)之间传输数据。还支持与现有文本文件建立连接。 此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。

另外附上.net中关于连接Excel的连接字符串:

string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + Excel全路径+";Extended Properties='Excel 12.0;HDR=" + isTrue + ";IMEX=1;'"; 

这里的isTrue当为True时,表示Excel中第一行为表头,数据从第二行开始,反之从第一行开始.

如何使用:

DataSet ds = new DataSet();
using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
string strSql = string.Format("select * from [{0}$]", sheetName);//sheetName为excel中sheet表名。
using (OleDbDataAdapter myCommand = new OleDbDataAdapter(strSql, conn))
{
myCommand.Fill(ds, sheetName);
}
}
System.Data.DataTable dt = new System.Data.DataTable();
dt = ds.Tables[0].Copy();
return dt;