none
使用ADO读excel文件单元格内容返回VT_NULL RRS feed

  • 问题

  • 在使用ADO访问EXCEL文件单元格时,返回VT_NULL,但相应的excel文件的单元格的内容不为空啊,不知是怎么回事?
    _variant_ data = pRes->Fields->GetItem((LONG)i)->GetValue();
    调试时 data在内容不为空时返回VT_NULL

    2009年6月23日 9:57

答案

  • 这个我知道,是因为ADO的驱动对excel支持不好的原因,你只要在excel里把返回VT_NULL的单元格设置为字符串类型就可以了。
    2009年7月21日 3:11

全部回复

  • 我记得ADO访问EXCEL index是从1开始而不是0
    麻烦把正确答案设为解答。
    2009年6月23日 10:28
    版主
  • index没问题啊 是当pRes->Fields->GetItem((LONG)i)->GetValue()时返回值不正确,得到的内容不对,比如在某个excel的单元格中,有内容的,比如是“微软”,当执行pRes->Fields->GetItem((LONG)i)->GetValue()时本应该返回“微软”、类型是VT_BSTR,但是返回了VT_NULL ,这个错误了~,是这个问题。
    不断向前!!
    2009年6月23日 12:30
  • 英文能够读出来吗?
    试试:
    _variant_t t = _variant_t(long(i));
      result = (LPCSTR)_bstr_t(pRes->GetCollect(t));
    麻烦把正确答案设为解答。
    2009年6月24日 1:06
    版主
  • 也不行,pRes->GetCollect(t)还是会在有内容的excel的单元格中返回VT_NULL。我想是不是因为出错的excel文件的单元格的内容格式有问题,因为我手动改下内容,ado就可读到内容,不返回VT_NULL.


    不断向前!!
    2009年6月25日 2:02
  • 麻烦哪位专家高手回复下啊
    谢谢
    不断向前!!
    2009年6月26日 4:45
  • 好久没来关系这个问题了,今天来了,还是没人回复。我给思路吧~:想得到excel文件的数据,把里面的内容复杂到txt文件中,然后读里面的内容就可了。我试了下,可以。
    最后就回到主题:为什么会读不出来呢?
    不断向前!!
    2009年7月10日 9:38
  • 这个我知道,是因为ADO的驱动对excel支持不好的原因,你只要在excel里把返回VT_NULL的单元格设置为字符串类型就可以了。
    2009年7月21日 3:11