小弟用在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中存有数据往各位大虾指点
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中存有数据往各位大虾指点
解决方案 »
- VS2005下怎么添加继承自CButton的CMyButton类对象啊
- hook CreateFile问题
- 如何判断HTREEITEM与CTreeCtrl的从属关系
- 动态创建的控件怎么处理消息函数
- 请问有无在WINDOWS中在某个目录中搜寻指定扩展名的函数,或者怎样搜寻?
- 在MFC中如何将GIF动画导入对话框?
- 问一个双向链表的问题.急!
- ◆ --- 300分 -- 求救: 如何改变文件的所有者 --- ◆
- vc7怎么没有vc6好用了,奇怪的问题啊.
- 有哪位大哥能够解释一下com里面的类工厂的作用?
- vector应用Serialize进行序列化问题
- socket网络映射问题, 外网服务器如何发数据给内网中的客户端?
楼主为什么不试着逐个单元读取实验一下,不要一次把所有单元的内容都复制到rsArray中,这样便于调试!
因为有几千行,逐个读的话比较费时间
再说其实rsArray也是个二维数组,里面也是分单元格保存的...抑郁的问题...