XE4中OLE导出EXCEL会有数据丢失解决方案

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 ; 

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