0

尝试使用下面的代码加载一个 excel 文件给我这个错误

Microsoft Access 数据库引擎找不到对象“工作表名称”。确保对象存在并且正确拼写其名称和路径名。如果“工作表名称”不是本地对象,请检查您的网络连接或联系服务器管理员。

我确定工作表名称是正确的。

有什么建议么?

if (strFile.Trim().EndsWith(".xlsx"))
{
   strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
}
else if (strFile.Trim().EndsWith(".xls"))
{
    strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
}


OleDbConnection SQLConn = new OleDbConnection(strConnectionString);
SQLConn.Open();
OleDbDataAdapter SQLAdapter = new OleDbDataAdapter();
string sql = "SELECT * FROM [" + sheetName + "]";
OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn);
SQLAdapter.SelectCommand = selectCMD;

///error in this line
SQLAdapter.Fill(dtXLS);
SQLConn.Close();
4

2 回答 2

2

正如上面评论中提到的,你有没有试过这个

string sql = "SELECT * FROM [" + sheetName + "$]";
于 2013-05-30T19:54:27.407 回答
1
DataSet ds = new DataSet();

if (strFile.Trim().EndsWith(".xlsx"))
{
   strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
}
else if (strFile.Trim().EndsWith(".xls"))
{
    strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
}

OleDbConnection objXConn = new OleDbConnection(strConnectionString);
                objXConn.Open();
                OleDbCommand objCommand = new OleDbCommand("SELECT * FROM [" + SheetName + "$]", objXConn);
                OleDbDataAdapter adp = new OleDbDataAdapter(objCommand);
                adp.Fill(ds);
                objXConn.Close();
于 2013-05-31T04:52:53.820 回答