System.Data.DataTable dtExcel = OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });这样返回的sheel是按字母排序的,有什么办法能获得第一个sheel吗? 不使用com组件

解决方案 »

  1.   


    //不需要组件是不可能的  我以excel2007举个例子
    string strConn = @"Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + filePath + "; Extended Properties = 'Excel 12.0;HDR = NO; IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                string strExcel = "";
                strExcel = "select * from [sheet1$]";//可以这样写
                DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                string tableName = schemaTable.Rows[0][2].ToString().Trim();//表名
                  strExcel = "select * from ["+tableName+"]";//也可以这样写
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);
                DataSet ds = new DataSet();            myCommand.Fill(ds, "table1");
      

  2.   

    string tableName = schemaTable.Rows[0][2].ToString().Trim();//表名   //这个并不是excel 里的第一个
                  strExcel = "select * from ["+tableName+"]";//也可以这样写    //并不知道表名的
      

  3.   


    单步调试 string tableName = schemaTable.Rows[0][2].ToString().Trim();//表名 //这个并不是excel 里的第一个
    这个可以自己改下标 调试看schemaTable里面的值 然后再根据值取出你想要的 strExcel = "select * from ["+tableName+"]";//也可以这样写 //并不知道表名的
    不知道表名? 是没得到 还是什么?