从excel导入的数据面临问题

时间:2012-06-20 11:41:41

标签: c# asp.net

我从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文件中读取数据。 是否需要任何特殊身份验证。 因为我收到了上述错误。

1 个答案:

答案 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>