数据导出到excel,该如何解决

数据导出到excel
用户选择需要的数据后导入到excel.
由于数据不能一次同时选择,所以想先把需要导入的数据全部放到内存(或者有其他更好的方式!),最后选择好了以后一起导入到excel。
导入格式如下:

  字段1 字段2 字段3 字段4 。。  
  0.77 0.67 0.68 0.89 。。。

由于导入的字段数目不确定,所以写数据的时候应该怎么写! 并且还需要以数据连同表格的形式一起导入到excel,数据导入了那表格线怎么自动画!
  望指教!!!


------解决方案--------------------
使用ole
------解决方案--------------------
使用写文件的方法也可以,一条一条写
写×.cvs文件。如下
字段1, 字段2 , 字段3 , 字段4 。。
0.77 , 0.67, 0.68, 0.89 。。。

比用OLE快100倍
------解决方案--------------------
#define PG OlePropertyGet
#define PS OlePropertySet
#define OP OleProcedure
#define OF OleFunction

AnsiString ExcelFileName = GetCurrentDir()+"\\SqlOpt\\CuStyle.xls";
try
{
Ex = Variant::CreateObject("Excel.Application");
}
catch(...)
{
Application->MessageBox("无法启动Excel","错误",MB_ICONSTOP|MB_OK);
return;
}
Ex.PS("Visible",false);
Ex.PG("WorkBooks").OP("Open",ExcelFileName.c_str());
Wb = Ex.PG("ActiveWorkBook");
Sheet = Wb.PG("ActiveSheet");
Sheet.PG("Range","A2:I3000").OP("Clear");
int iRows, LI;
LI = SP1->RecordCount;
SP1->First();
for(iRows=2;iRows<LI+2;iRows++)
{
dmy=SP1->Fields->Fields[3]->AsString + "-"+SP1->Fields->Fields[4]->AsString+"-"+SP1->Fields->Fields[5]->AsString;
Sheet.PG("Cells",iRows,1).PS("Value",SP1->Fields->Fields[0]->AsInteger);
Sheet.PG("Cells",iRows,2).PS("Value",SP1->Fields->Fields[1]->AsString.c_str());
Sheet.PG("Cells",iRows,3).PS("Value",SP1->Fields->Fields[2]->AsString.c_str());
Sheet.PG("Cells",iRows,4).PS("Value",dmy.c_str());
Sheet.PG("Cells",iRows,5).PS("Value",SP1->Fields->Fields[6]->AsFloat);
Sheet.PG("Cells",iRows,6).PS("Value",SP1->Fields->Fields[7]->AsString.c_str());
Sheet.PG("Cells",iRows,7).PS("Value",SP1->Fields->Fields[8]->AsString.c_str());
Sheet.PG("Cells",iRows,8).PS("Value",SP1->Fields->Fields[9]->AsString.c_str());
Sheet.PG("Cells",iRows,9).PS("Value",SP1->Fields->Fields[10]->AsInteger);
SP1->Next();
}
Wb.OP("Save");
Wb.OP("Close");
Ex.OF("Quit");
Ex = Unassigned;
Wb = Unassigned;
Sheet = Unassigned;

导出到Excel,再把没用的删除就可以了. 


------解决方案--------------------
AnsiString __fastcall Tfm_aesc_fyjs::Convert_String(double pp)
{
if(pp==0) return "";
else return FormatFloat("0.00",pp);
}
//---------------------------------------
void __fastcall Tfm_aesc_fyjs::SetFont(Variant ExcelApp,AnsiString value,AnsiString font_name,AnsiString font_style,int font_size,int prow,int pcol)
{ //设置字体并写入
ExcelApp.OlePropertyGet("Rows",prow).OlePropertySet("RowHeight",20);
ExcelApp.OlePropertyGet("Cells",prow,pcol).OlePropertySet("Value",value.c_str());