1.Microsoft.ACE.OLEDB.12.0 与Microsoft.Jet.OLEDB.4.0 

在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以下是一行连接串源代码:
strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strExcelFilePath & ";Extended Properties=Excel 12.0"
这里的Provider使用了Microsoft.ACE.OLEDB.12.0,其实除了Microsoft.ACE.OLEDB.12.0,还有Microsoft.Jet.OLEDB.4.0,它们俩者之间么联系和区别:

共同点:都是做为连接Excel对象的接口引擎
不同点
对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。
2.上传Excel的时候长时间没有反应或者报The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine错误
  通常解决办法:下载AccessDatabaseEngine.exe(用于帮助在 2010 Microsoft Office System 文件与非 Microsoft Office 应用程序之间传输数据)直接双击安装重启电脑,
         打开IIS-->找到与网站相对应的应用程序池-->高级设置-->常规-->启用32位应用程序的值为:True。
3.两个取出Excel中数据并分别放到DataSet和DataTable中列子:
     //filePath:上传Excel路径
     public static DataTable ExcelToDataTable(string filePath) {
            OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + @"; Extended Properties=""Excel 12.0 Macro;HDR=YES"";");
            conn.Open();
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }

        public static DataSet ExcelToDataSet(string filePath)
        {
            OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + @"; Extended Properties=""Excel 12.0 Macro;HDR=YES"";");
            conn.Open();
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", conn);
            DataSet ds = new DataSet();
            da.Fill(ds,"XXX");
            return ds;
        }