【问题标题】:oledb connection string for Excel 2016 in C#C# 中 Excel 2016 的 oledb 连接字符串
【发布时间】:2019-01-29 09:43:09
【问题描述】:

我一直在尝试使用 C# 访问 2016 MS Excel 文件,但连接字符串只能工作到 2013 MS Excel。

我当前的连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;数据源=c:\myFolder\myExcel2007file.xlsx; 扩展属性="Excel 12.0 Xml;HDR=YES";

MS Excel 2016 有修改过的 oledb 连接字符串吗?

【问题讨论】:

    标签: c# excel vba connection


    【解决方案1】:

    这发生在我通过 Office 365 程序从本地安装的 Office 13 升级到 Office 16 后。我收到此异常:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

    我无法通过 Office 365 安装过程找到安装驱动程序的方法。

    我必须安装https://www.microsoft.com/en-us/download/details.aspx?id=13255 - x64 版本没有解决问题,必须使用 32 位版本。

    我在 App.config 中的连接字符串

        <add key="Excel07ConnectionString" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
    

    使用它的代码:

                var excelConnectionString = ConfigurationSettings.GetExcelConnection(fileLocation);
                var dataTable = new DataTable();
    
                using (var excelConnection = new OleDbConnection(excelConnectionString))
                {
                    excelConnection.Open();
                    var dataAdapter = new OleDbDataAdapter("SELECT * FROM [Users$]", excelConnection);
                    dataAdapter.Fill(dataTable);
                    excelConnection.Close();
                }
                Console.WriteLine("OpenExcelFile: File successfully opened:" + fileLocation);
                return dataTable;
    

    【讨论】:

    • 重要的是提到了 x64bits。都是我的问题。
    • 另外值得注意的是:要安装32位引擎,如果安装了64位的excel,需要添加/passive选项!
    【解决方案2】:

    这对我有用:

    private string ExcelConnection(string fileName)
    {
        return @"Provider=Microsoft.Jet.OLEDB.4.0;" +
               @"Data Source=" + fileName + ";" +
               @"Extended Properties=" + Convert.ToChar(34).ToString() +
               @"Excel 8.0" + Convert.ToChar(34).ToString() + ";";
    }
    

    【讨论】:

    • 它也对我有用。不过,我不明白为什么。这不是旧联系吗?这怎么能在新的excel上工作?不过谢谢。
    猜你喜欢
    • 2013-09-15
    • 2011-12-02
    • 2011-05-31
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多