我从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 $'。确保对象存在,并且您正确拼写其名称和路径名称
*
我的工作表名称拼写为correclty 但为了我的确认,我做了下面的代码 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文件中读取数据。 是否需要任何特殊身份验证。 因为我收到了上述错误。
答案 0 :(得分:0)
相反,如果Ace.OLEDB您可以尝试使用Microsoft.Jet.OLEDB,因为我面对的是simillar然后我切换到Jet.OLEDB
string MyExelFile = "C:\Temp\Sample.xls"; string MyExcelSheet = "[Sheet1$]"; string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + MyExelFile + ";
Extended Properties=\"Excel 8.0; HDR=Yes; IMEX=1\""; String MySQLSelect = "select * from " + MyExcelSheet + ""; DataTable Items=new DataTable() ;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>