我想按下标访问Excel中的某个sheet,不按sheet的名字访问,想按下标访问比如访问第1个sheet,第2个sheet.求教,谢谢:) 

解决方案 »

  1.   

    自己换就是了,先用ado.net,查schema,查出所有的sheet name,然后...没有然后,你懂得。
      

  2.   

    源代码参见http://blog.csdn.net/jsyhello/article/details/6302380
      

  3.   

    DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
    读Schema
      

  4.   


    path = openFileDialog1.FileName;                    strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + path + ";Extended Properties=\"Excel 8.0;IMEX=1\"";//这个字符串要看你 用的office 是什么版本 要对应
                        OleDbConnection cnnxls = new OleDbConnection(strCon);
                        cnnxls.Open();
                        //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 
                        DataTable dtSheetName = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                        //包含excel中表名的字符串数组                    string[] strTableNames = new string[dtSheetName.Rows.Count];
                        for (int k = 0; k < dtSheetName.Rows.Count; k++)
                        {
                            strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                        }
                        tablename = strTableNames[0];
                        string sql = "select * from [" + tablename + "] ";
                        OleDbDataAdapter myCommand = new OleDbDataAdapter(sql, strCon);
                        myCommand.Fill(ds, "table1");