开发环境:Win7 64位、VS2013(Update 4),已安装Access 2007。
问题描述:读取Excel文件时报错:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。
代码:运行至第7行时报错(Conn.Open();语句)。
public static DataTable 读取xlsx文件(string 文件路径, string 工作簿名称) { string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + 文件路径 + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(strConn); string strCom = "SELECT * FROM [" + 工作簿名称 + "$]"; Conn.Open(); System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, Conn); DataSet ds = new DataSet(); myCommand.Fill(ds, "[" + 工作簿名称 + "]"); Conn.Close(); return ds.Tables[0]; }
解决方法:修改项目属性,在“生成”选项卡中设置目标平台为“x86”。
说明:如果是未安装Access时报错,可以先下载AccessDatabaseEngine,安装后再试,仍有问题再修改上述项目属性。