初始化字符串的格式不符合OLE DB规范

本文关键字:OLE DB 规范 不符合 格式 字符串 初始化 | 更新日期: 2023-09-27 17:49:00

尝试使用第三方组件读取Excel文件时出现以下错误

初始化字符串的格式不符合OLE DB规范

现在,我知道"第三方组件"这个词会在这里敲响警钟,但是听我把话说完。

这是我使用的连接字符串

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:'users'rory'downloads'testdb_4.xls;
Extended Properties='Excel 8.0;HDR=YES;';

我已经得到了这个确切的连接字符串工作没有问题与以下c#代码

using (OleDbConnection conn = new OleDbConnection())
{
    DataTable dt = new DataTable();
    conn.ConnectionString = connstring;
    using (OleDbCommand comm = new OleDbCommand())
    {
        comm.CommandText = "select * from [TEST_DB$]"; 
        // TEST_DB is the name of the sheet
        comm.Connection = conn;
        using (OleDbDataAdapter da = new OleDbDataAdapter())
        {
            da.SelectCommand = comm;
            da.Fill(dt);
            // do stuff with dt
        }
    }
}

按预期工作,数据表被Excel文件中的数据填充。然而,当我试图从组件访问它时,我得到了上面的错误。

我不是OLE DB的专家,但我的印象是驱动程序在操作系统级别,如果它们适用于一个应用程序/连接字符串,它们应该适用于所有具有相同连接字符串的应用程序。我错了吗?如果是这样,有人知道这里发生了什么吗?

我已经联系了该组件的技术支持。

初始化字符串的格式不符合OLE DB规范

解决方案是将单引号替换为转义的双引号。

 string conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
 "Data Source=C:'users'rory'downloads'testdb_4.xls;" + 
 "Extended Properties='Excel 8.0;HDR=YES;'"; // single quotes

 string conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
 "Data Source=C:'users'rory'downloads'testdb_4.xls;" + 
 "Extended Properties='"Excel 8.0;HDR=YES;'""; // escaped double quotes

OleDbConnection没有单引号问题,但显然一些应用程序和组件有。