private DataSet createDataSource()
    {
        string strCon;
        strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~\\Files\\E.xls") + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
        OleDbConnection con = new OleDbConnection(strCon);
        OleDbDataAdapter da = new OleDbDataAdapter("select * from [E$]", con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }
当通过该方法 导入数据时提示:'E$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。愁死我了啊!大侠们,怎么解决啊?

解决方案 »

  1.   

     //從excel導入返回DataSet
        private DataSet CreateDataSource(string strFileName)
        {
            //客户端路径
            string strCon = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + strFileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"";
            OleDbConnection olecon = new OleDbConnection(strCon);
            DataSet myds = new DataSet();
            try
            {
                if(olecon.State == ConnectionState.Closed)
                {
                    olecon.Open();
                }
                //抓多張Sheet1
                System.Data.DataTable dt = olecon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                if (dt.Rows[0]["TABLE_Name"].ToString().IndexOf("$") < 0)
                {
                    dt.Rows[0]["TABLE_Name"] += "$";
                }
                string strSelect = "Select * From [" + dt.Rows[0]["TABLE_Name"].ToString() + "] ";
                OleDbDataAdapter da = new OleDbDataAdapter(strSelect, olecon);            da.Fill(myds, dt.Rows[0]["TABLE_Name"].ToString());
                da.Dispose();
                olecon.Close();
            }
            catch (Exception ex)
            {
                olecon.Close();
                FileInfo deleteFile = new FileInfo(Server.MapPath("UploadExcel") + "\\" + fileName);
                deleteFile.Delete();
                Response.Write("<script language=JavaScript>alert('連接EXCEL錯誤,請將該EXCEL文件另存新檔後再匯入');</script>");
            }
            return myds;
        }
      

  2.   

    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
     using(OleDbConnection OleConn = new OleDbConnection(strConn))
    {
      OleConn.Open();
      String sql = "SELECT * FROM [Sheet1$]";
      OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
      DataSet ds= new DataSet();
      OleDaExcel.Fill(ds);
      OleConn.Close();
    }
    $删除看看
      

  3.   

    Sheet1$ 而非 E$
    注意Excel工作簿的名称。
      

  4.   

    你这是office2003的,如果是2007,注意不同的连接字符串