众所周知,在Excel里面有很多个Sheet标签,而在VS.NET里要读取Excel里的资料,是用OleDB数据引擎来读,应此,Excel表名就成了数据库名,而Sheet就成了表名了,但我现在遇到一个难题了,就是要把Excel里的所有的Sheet(包括Sheet里的数据)读到TreeView里去,我是用VS2005的C#做开发的。请问有那位高手可以帮帮我,谢谢了。(因为是新来的,所以给的分数不多,不好意思了)

解决方案 »

  1.   

    你先用OleDbConnection.GetOleDbSchemaTable方法返回Excel中所有的sheet,然后对每个sheet查询返回datatable.既然都返回到datatable了,别的就不用说了吧?
      

  2.   

    那就请你先看看我的写的语句吧:
     public String[] GetExcelSheetNames()
            {
                DataTable dt = null;
                try
                {
                    if (_oleDbCon.State == ConnectionState.Closed)
                    {
                        OpenConnection();
                    }
                    dt = _oleDbCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    if (dt == null)
                    {
                        return null;
                    }
                    String[] excelSheets = new String[dt.Rows.Count];
                    int i = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        string strSheetTableName = row["TABLE_NAME"].ToString();
                        excelSheets[i] = strSheetTableName.Substring(0, strSheetTableName.Length - 1);
                        i++;
                    }
                    return excelSheets;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (dt != null)
                    {
                        dt.Dispose();
                        dt = null;
                    }
                }
    上面的语句是返回了所有的Sheet了,但我不知道要怎么做才能把返回的Sheet与Sheet里的数据如何添加到TreeView里去,能再帮帮忙吗?
      

  3.   

    OleDbDataAdapter da = new  OleDbDataAdapter();
    da.SelectCommand = new OleDbCommand();
    da.SelectCommand.Connection = _oleDbCon;
    DataSet ds = new DataSet();
    foreach (DataRow row in dt.Rows)
      {
          string strSheetTableName = row["TABLE_NAME"].ToString();
          da.SelectCommand.CommandText = "select * from [" + strSheetTableName +"]";
          DataTable dtSheet = new DataTable();
          da.Fill(dtSheet,strSheetTableName);
          ds.Tables.Add(dtSheet);
       }
    现在,ds里就是各Sheet的数据了。别忘了将_oleDbCon.Close();
      

  4.   

    谢谢你,MyLf,分已经给你加了