首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

XE4中OLE导出EXCEL会有底据丢失

2013-09-14 
XE4中OLE导出EXCEL会有数据丢失在RAD2010中好用的代码,转化到XE4中导出EXCEL会有数据丢失大根丢失3个字符

XE4中OLE导出EXCEL会有数据丢失
在RAD2010中好用的代码,转化到XE4中
导出EXCEL会有数据丢失

大根丢失3个字符这样子,也不知道问题出在哪了。
[解决办法]
AnsiString str = Column->Title->Caption; 
            //XLSheet.OlePropertySet(L"Cells", 1, i + 1, Column->Title->Caption.c_str());
            Memo1->Lines->Add(str);//这里str显示是正确的
            XLSheet.OlePropertyGet("Cells",1,i+1).OlePropertySet("Value",
                                   str.c_str());
//这里不要使用AnsiString ,COM通讯中的字符串是BSTR , CB中的WideString是专为COM而写,调用时,COM参数最好用 WideString::b_str()
//从上面语句看 Column->Title->Caption 未能正确传递到 Excel 中去,可能会有乱码。

传递内容里为:
String AStrValue = ColumnA->Field->AsString;
COM调用时,最好改为
WideString AStrValue = ColumnA->Field->AsWideString;
Field有三个String相关的方法:
Field->AsUnicodeString,Field->AsAnsiString,Field->AsWideString

Field->AsString 默认为 AsUnicodeString ; 

当数据库的字符编码与当前操作系统不同时,使用不当可能导致乱码。

热点排行