用的不知道谁写的还是导出来的一个叫做cell2000的控件,用一些InvokeHelper的方式操作excel文件,读取单元格文字函数如下
CString CCell2000::GetCellString(long col, long row, long sheet)
{
CString result;
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_I4;
InvokeHelper(0x31, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
col, row, sheet);
return result;
}如果单元格中出现°(度)这个符号,且文字中没有中文,度符号在末尾,则是读不出来的,比如"11°"返回的字符串只有"11"
有中文则全按宽字节取,度是-95 -29(excel文件中存储的是B0 00),正常显示,没有中文则全按单字节取,度是-80 (B0)
excel是用2007操作存储的2003格式xls文件,请问是什么原因
PS:InvokeHelper这些操作什么的啊,学名叫什么,是在整OLE什么的吗

解决方案 »

  1.   

    COM
    函数全部是automation生成的可以试试GetText
    在你的excel.cpp中应该导出有这个函数
    VARIANT Range::GetText()
    {
    VARIANT result;
    InvokeHelper(0x8a, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
    return result;
    }
      

  2.   

    楼上说的应该是用一个叫excel8或excel9的文件,4万多行代码,我用的这个叫cell2000.cpp/h才4k多行,只有一个类,不分什么app,worksheet,range,关于获得单元格文字的就发现了这个对路,不知道这东西是谁写的,是不是通用的,有谁用过没
      

  3.   

    为什么要这么操作,把它当成一个数据库,直接select就可以了
      

  4.   

    呵呵,cell控件是用友公司开发的报表控件