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 ;
当数据库的字符编码与当前操作系统不同时,使用不当可能导致乱码。