OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn);         
上面这样只能查找到一个Sheet,但是我想读出excel中全部的sheet应该怎么做呀?

解决方案 »

  1.   

    给你一个方法。private DataTable GetExcelFirstTableName(string excelFileName)
        {
            //string tableName = null;
            DataTable dt = new DataTable();
            if (File.Exists(excelFileName))
            {
                using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet." +
                            "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + excelFileName))
                {
                    conn.Open();
                    dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                   
                }
            }
            return dt;
        }该DATATABLE得到的是Excel所有Sheet名称循环该DATATABLE,加上你的那段代码,可得到你要的结果
      

  2.   

    获取所有的sheet名字
    下来知道怎么做了吧?
    protected string[] sheetfromexcel(string filepath)
        {
            OleDbConnection objConn = null;
            DataTable dt = null;
            string[] sheetName = null;
            try
            {
                string connString =
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filepath+";Extended Properties=Excel 8.0;";
                objConn = new OleDbConnection(connString);
                objConn.Open();
                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);            if (dt != null)
                {
                    //string[] sheetName = new string[dt.Rows.Count];
                    sheetName = new string[dt.Rows.Count];
                    int i = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        sheetName[i] = row["TABLE_NAME"].ToString();
                        i++;
                    }
                }
                objConn.Close();
                objConn.Dispose();
            }
            catch (Exception e1)
            {
                Response.Write(e1.Message);
            }
            return sheetName;    }