使用OleDbConnection读取Excel文件时,代码没问题,编译时却报错:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
解决办法:下载AccessDatabaseEngine.exe, 并右键单击,选择Open, 然后它自动配置好环境。这样再编译就不会报错了。
附一个控制台程序建立的使用OleDbConnection方法访问并读取Excel文件的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;
using System.Data.OleDb;
using System.Data;
namespace SeleniumTest2
{
class Program
{
static void Main(string[] args)
{
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Temp\Book1.xlsx;Extended Properties=Excel 12.0";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [Sheet1$]", conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
//Console.WriteLine(ds.Tables[0].Rows.Count.ToString());
foreach(DataRow dataRow in ds.Tables[0].Rows)
{
for(int i=0;i<dataRow.ItemArray.Count();i++)
{
Console.WriteLine(dataRow.ItemArray[i]);
}
}
//Console.WriteLine(ds.Relations.Count);
Console.ReadLine();
}
}
}