0

我正在从 MS Excel 导入数据。我写的代码是,

var ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" +
    uploadfile.PostedFile.FileName + ";" + "Extended Properties=Excel 12.0;";
OleDbConnection objConn = new OleDbConnection(sConnectionString);

objConn.Open();
try
{
    var objCmdSelect = new OleDbCommand("select * from [Sheet1$]", objConn);
}

等等。

我遇到了一个对我来说看起来很一般的错误

Microsoft Office Access 数据库引擎找不到对象“Sheet1$”。确保对象存在并且正确拼写其名称和路径名

*

我的工作表名称拼写正确,但为了我的确认,我在下面的代码 dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

if(dt == null)
{
  return null;
}

var excelSheets = new String[dt.Rows.Count];
int i = 0;

// Add the sheet name to the string array.
foreach(DataRow row in dt.Rows)
{
  excelSheets[i] = row["TABLE_NAME"].ToString();
  i++;
}

* 但我的数据表为空。我的问题是连接已成功打开,但我无法从 excel 文件中读取数据。 是否需要任何特殊身份验证。? 因为我收到上述错误。

4

1 回答 1

0

相反,如果 Ace.OLEDB 您可以尝试使用 Microsoft.Jet.OLEDB,因为我遇到了类似情况,然后我切换到 Jet.OLEDB

    字符串 MyExelFile = "C:\Temp\Sample.xls";
    字符串 MyExcelSheet = "[Sheet1$]";
    string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + MyExelFile + ";
扩展属性=\"Excel 8.0;HDR=是;IMEX=1\""; String MySQLSelect = "select * from " + MyExcelSheet + ""; 数据表项=新数据表();

System.Data.OleDb.OleDbConnection Cn = new System.Data.OleDb.OleDbConnection(); Cn.ConnectionString = StrConn; System.Data.OleDb.OleDbDataAdapter Da = new System.Data.OleDb.OleDbDataAdapter (MySQLSelect, Cn); Cn.Open(); Da.Fill(Items); Cn.Close(); </pre>
于 2012-06-20T12:00:25.440 回答