string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=D:/aa.xls;"+"Extended Properties=Excel 8.0;";   
 OleDbConnection   conn   =   new   OleDbConnection(strConn);   
 DataTable   schemaTable   =   conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);   
 string   tableName=schemaTable.Rows[0][2].ToString().Trim(); 这个schemaTable.Rows[0][2]   里面的2怎么换成列的名称,就是不用数字,用字符串来代替. 

解决方案 »

  1.   

    我看网上的一些代码用schemaTable.Rows[0]["TABLE_NAME"]来获取第一个工作表的名称
    我不知道这个TABLE_NAME代表的是什么?我用excel的名称试了下,报错.
      

  2.   

    这个schemaTable.Rows[0][2]  里面的2怎么换成列的名称,就是不用数字,用字符串来代替.?[0][2]这个不是表示ExceL的B1这个单元格吗?(第0行第2列)如果你2用字串字代替,不明白你要做什么哦?是不是想要读取不同行列单元格内容?
    如果是这样的话,希望以下代码对你有所帮助
    行:int row_cnt = this.schemaTable.Rows.Count;
    列:int col_cnt = this.schemaTable.Columns.Count;for (int row = 0; row < row_cnt; row++)
        {
         for (int col = 0; col < col_cnt; col++)
             {
               try
                  {
                Excel单元格= schemaTable.Rows[row].Cells[col].Value.ToString();
                  }  
                catch
                {
                    MessageBox.Show("读Excel失败");
                    return;
                 }
                }
               rowIndex++;
           }
      

  3.   

    参考:http://blog.csdn.net/gisfarmer/archive/2009/01/10/3738959.aspx