初始化字符串的格式不符合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的专家,但我的印象是驱动程序在操作系统级别,如果它们适用于一个应用程序/连接字符串,它们应该适用于所有具有相同连接字符串的应用程序。我错了吗?如果是这样,有人知道这里发生了什么吗?
我已经联系了该组件的技术支持。
解决方案是将单引号替换为转义的双引号。
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
没有单引号问题,但显然一些应用程序和组件有。