各位大侠请教一下。把Excel导入数据库时,Excel中只有一个film工作表,但是通过OleDbConnection读取的时候确有两个,一个是film,另一个是film$,请教这个两个工作表的异同。

解决方案 »

  1.   

    string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + ";Extended Properties=Excel 8.0" ;
    DataSet ds= new DataSet();
    using(OleDbConnection conn= new OleDbConnection(strCon))
    {
    string strCom = " SELECT * FROM [Sheet1$]" ;
    conn.Open() ;
    OleDbDataAdapter myCommand = new OleDbDataAdapter(str , conn) ;
    myCommand.Fill(ds) ;
    conn.Close() ;
    }
      

  2.   

    sheet1$为Excel文件的工作表名,一般要加上$才能正常使用. 
      

  3.   

    sheet1$和sheet1两个工作表有什么区别?
      

  4.   


            public static DataSet ImportExcel(string file)
            {
                System.IO.FileInfo fileInfo = new FileInfo(file);
                if (!fileInfo.Exists)
                    return null;            string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
                OleDbConnection objConn = new OleDbConnection(strConn);
                DataSet dsExcel = new DataSet();
                try
                {
                    objConn.Open();
                    string strSql = "select * from  [sheet1$]";
                    OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn);
                    odbcExcelDataAdapter.Fill(dsExcel);
                    return dsExcel;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    objConn.Close();
                }
            }
    工作表的名字后面必须跟上$
      

  5.   

    你有指定读取工作表名称吗?
    就像这样,如果这样读取的应该只有一个的。
    string strCom = " SELECT * FROM [Sheet1$]" ;
      

  6.   


    带$的是有效的表名有两个表名的原因在于你用了oledb时调用了GetOleDbSchemaTable()方法
    改方法有个问题就是检索表名的同时还会输出该表一个表的区域名如果你用mssql2005的dts导入excel也会有相同现象发生
      

  7.   

    SELECT * into   FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','User ID=Admin;Password=;Data Source=你的Execl路径;Extended Properties=''Excel 8.0;IMEX=1''')...Execl工作区间名$
      

  8.   

    Excel sheet表名动态读取。 DataTable _Table = GetExcelTableName(@"C:\1.xls");
                for (int i = 0; i != _Table.Rows.Count; i++)
                {
                    MessageBox.Show(_Table.Rows[i]["Table_Name"].ToString());
                }具体方法/// <summary>   
           /// 获取EXCEL的表 表名字列    
           /// </summary>   
           /// <param name="p_ExcelFile">Excel文件</param>   
           /// <returns>数据表</returns>   
           public static DataTable GetExcelTableName(string p_ExcelFile)   
           {   
               try  
               {   
                   if (System.IO.File.Exists(p_ExcelFile))   
                   {   
                       OleDbConnection _ExcelConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + p_ExcelFile);   
                       _ExcelConn.Open();   
                       DataTable _Table = _ExcelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);   
                       _ExcelConn.Close();   
                       return _Table;   
                   }   
                   return null;   
               }   
               catch  
               {   
                   return null;   
               }   
           } 
      

  9.   

    楼上大牛们说的很好,我给你一个牛人的博客http://blog.csdn.net/zjcxc/category/125588.aspx
      

  10.   


     /// <summary>
            /// 导出EXCEL表中的数据到 myDataSet
            /// </summary>
            public static DataSet  GetConnect(string PathName, DataSet myDataSet)
            {
                //创建一个数据链接
              //  string strCon = string.Format(" Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = {0};Extended Properties=Excel 8.0", path);
                string strCon =string .Format ( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= {0} ;Extended Properties='Excel 8.0;HDR=YES;IMEX=1';",PathName );
                OleDbConnection myConn = new OleDbConnection(strCon);
                //条件查询EXCEL表
                string strCom = " SELECT * FROM [Sheet1$] ";
                myConn.Open();
                //打开数据链接,得到一个数据集
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
                //创建一个 DataSet对象
                myDataSet = new DataSet();
                //得到自己的DataSet对象
                myCommand.Fill(myDataSet, "[Sheet1$]");
                //关闭此数据链接
                myConn.Close();
                return myDataSet;
            }