【发布时间】:2014-07-19 13:58:23
【问题描述】:
我正在尝试使用我的 C# 应用程序从 Excel 工作表中查询数据。我现在似乎能够连接到该文件,但出现以下异常...
The Microsoft Office Access database engine could not find the object 'Sheet1$'.
我正在使用类似于Excel connection strings 的连接字符串
这是我的代码...
该代码基本上是一种方法(隐藏在一个类中),它使用参数变量根据另一列中提供的数据从一列返回数据...。同样的方法适用于我的其他应用程序中的 SQL 连接。 .这是我第一次使用 Excel 表格..
public static string ReturnDefinition(string remCode)
{
string strReturnMessage = "";
string excelConnectString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MEDICARE.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES""";
OleDbConnection objConn = new OleDbConnection(excelConnectString);
OleDbCommand objCmd = new OleDbCommand("Select * from [Sheet1$] where Code = @remCode", objConn);
objCmd.Parameters.AddWithValue("@remCode", remCode);
try
{
objConn.Open();
OleDbDataReader ExcelDataReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
if (ExcelDataReader.HasRows)
{
while (ExcelDataReader.Read())
{
if (string.IsNullOrEmpty((string)ExcelDataReader["Description"]))
{
strReturnMessage = "** ERROR **";
}
else
{
strReturnMessage = ExcelDataReader["Description"].ToString();
}
}
}
else
{
strReturnMessage = "** ERROR **";
}
ExcelDataReader.Close();
return strReturnMessage;
}
catch (Exception ex)
{
return "** ERROR **: " + ex.Message;
}
finally
{
}
}
5/30
我意识到有文献涵盖了使用 OLEDB 与 Excel 的连接,但我认为我已将问题归结为工作表中的读取问题。同样,这是我第一次尝试连接到 Excel。我的 HDR 设置为 true,因为我打算将工作表视为 SQL 表。
在扩展属性中将 Excel 更改为 v.14.0
我的目标可能是错误的 Excel 版本。具体来说,excel表格是使用Office 2010创建的。使用This Article作为参考,我将版本从12.0更改为14.0。
现在我得到Could not find installable ISAM
【问题讨论】:
-
“Sheet1$”中的美元符号相当奇怪。您确定这是工作簿中电子表格的实际名称吗?
-
我想没关系。我试过有无,两种尝试都会产生相同的错误。我读过的大多数文章都包括 Sheet1 之后的美元,所以我认为这是必要的。