小弟用在VC2005(Unicode)下,用ADO读取Excel2003中内容时遇到了个奇怪问题~代码如下:
strTemp = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
strTemp += strAllPath;
strTemp += _T(";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"");
m_pExcelConnAmend->Open((_bstr_t)strTemp,"","",adModeUnknown);bSQL = _T("Select * From [功能规范-7000$]");
m_pExcelRec = p_Ado->GetExcelRec(bSQL);
nLine = m_pExcelRec->RecordCount;
_variant_t rsArray;
rsArray.vt = VT_NULL;
rsArray = m_pExcelRec->GetRows(nLine);
当Excel单元格中的文字不超过250时,获取一切正常
但当某一个单元格中内容有40行字数超过250时,超过部分就成乱码(但行数正常)
相当奇怪但更奇怪的是:当这个单元格在Excel表“中部”,即不是表的开头几行,才会有此现象
如果在Excel的开头几行某一个单元格中写入远超过250个字符以及超过40行的话,不仅此单元格可以正常读取,
表中部的那个单元格也可以正常读取,感觉好像格子被撑大了一样~~~十分不解切换到Multi-Byte下读取的彻底为乱码rsArray中只有bstrVal中存有数据往各位大虾指点

解决方案 »

  1.   

    有点诡异!
    楼主为什么不试着逐个单元读取实验一下,不要一次把所有单元的内容都复制到rsArray中,这样便于调试!
      

  2.   

    我前段时间也写过Excel和Csv文件,但是读就没有见过这样情况
      

  3.   

    to:lgtao
     
    因为有几千行,逐个读的话比较费时间
    再说其实rsArray也是个二维数组,里面也是分单元格保存的...抑郁的问题...
      

  4.   

    我几千行其实也不是很多,你可以一段Debug的版本,程序出现问题还是得仔细调试才能找到原因的!