ADO连接EXCEL是成功的,速度也算是很快的,但是处理起来太复杂了,所以有以下几个问题:
1.当第一行为合并的内容时,无法用sql语句“where”进行查询,因为不知道用什么字段名来查,
第一行不是合并内容的时候我是用第一行第n列的名字来查询的,象这样的情况,用什么都提示错误
大家都用什么方法处理这种情况呢?如果不是合并内容的时候,能否把第一行那些字段名列出来呢?
2.如何列出EXCEL文件里面所有的表名,因为有些不是sheet1,sheet2这样命名的,
事先不知道表名就无法进行处理了。大家有没有什么方法可以列出来呢?第一行不是合并内容时,表格是这样的:
手机号  姓名  住宅地址  公司地址我查询的时候就这样:select * from [sheet1$] where 手机号=12345678900" 当第一行是合并内容时,表格是这样的
      维护部员工详细情况
手机号  姓名  住宅地址  公司地址如果象上面那样查询就失败了,如果select * from [sheet1$]的话,
想把第二行全部列出来,会缺失第一列的“手机号”,但是可以列出第三行的全部内容
顶的人也会有分的,希望高手帮帮忙,解答一下,谢谢了!

解决方案 »

  1.   

    当第一行是合并内容时,表格是这样的
          维护部员工详细情况
    手机号  姓名  住宅地址  公司地址
    可以把这个sheet名叫维护部员工详细情况,这样的确没什么办法,不知道谁有没有?
    在宏里面这样
        For Each shet In ThisWorkbook.Sheets
        MsgBox shet.Name
        Next
    枚举所有sheet名称,当然,到VB6里面稍微改一下
      

  2.   

    你可以这样试试
    select * from [sheet1$] where thisWorkBooks.range("A2").value=12345678900"
      

  3.   

    Xbook.Sheets.count   '表个数
    Xbook.Sheets(X).name    '表名
      

  4.   

    感谢大家的回答!
    to yinweihong:
    thisWorkBooks.range("A2").value是什么?thisWorkBooks.range好象不能用在sql语句里吧?
    而且第一行是合并的,根本就没有A2这个内容。在数据库里必须把EXCEL当作数据库处理,
    第一行变成合并之后就无法确定某列的名称,也就无法查询了,我是希望找到解决办法。to xinliangyu(yxl):
    你说的方法不是ADO连接EXCEL的方法,那是另外一种处理EXCEL文件的方法,我知道怎么操作。
    我只是嫌那种打开方式太慢了,太影响速度,如果打开100个文件操作,那电脑就完蛋了还是那句话,顶的人有分,答复的人都有分,谢谢大家
      

  5.   

    既然可以使用Ado访问,工作表就成为Table对象啦,可以使用通用方法——
    ADO对象.OpenSchema:
    dim mRs as adodb.recordset
    Set mRs = mCn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
       If Not mRs.EOF Then
          mRs.MoveFirst
          Do Until mRs.EOF
             strTmp = mRs.Fields(2).Value
             If Right(strTmp, 1) = "$" Or Right(strTmp, 2) = "$'" Then
                msgbox strTmp &" 是个sheet!"
             End If
             mRs.MoveNext
          Loop
        End If
      

  6.   

    to xinliangyu(yxl):
    感谢你的回答,我准备明天试试看。
    能够把代码写完整吗?(包括连接数据库和上面这2个功能,我随便建个excel表格测试)
    第一个是当表格的第一行是合并行的时候,如何进行查询
    第二个是列出所有的sheet
    还有就是当某列都是数字的时候我如果把某行设置为文本内容会报错,能够解决吗?万分感谢兄弟们的帮忙!
      

  7.   

    100分的题怎么没人回答呢?
    着急啊。
    xinliangyu(yxl)起码可以得50分,解决了一个问题,还有人回答吗?再没人回答就结帖的。感谢答题和顶帖的人!
      

  8.   

    能不能考虑把excel表导入临时表,把是合并行的去掉
      

  9.   

    问题已经解决,参考了关于ado的资料和xinliangyu(yxl)的意见,太感谢了!!!
      

  10.   

    这个问题很好 我正在进行把excel导入数据库的操作 遇到好多麻烦 
      这个帖子对我有帮助 
    谢谢