//导出数据到excel
bool TForm1::Export_XLS(Variant vExcelApp,Variant Workbook,Variant vSheet,TClientDataSet * ds_Dataset, TDBGrid * dbgrd)
{
bool bflag = true;
try
{
int i,j,i_unvisible = 0;
int nRow = 1;
int nCol = 1;
AnsiString title = "";
for (i = 0;i<dbgrd->Columns->Count;i++)
{
if (dbgrd->Columns->Items[i]->Visible == true)
{
title = dbgrd->Columns->Items[i]->Title->Caption;
vSheet.OlePropertyGet((Variant)"Cells",(Variant)nRow,(Variant)nCol).OlePropertySet((Variant)"Value",title.c_str());
nCol++;
}
}
ds_Dataset->First();
j=0;
while(!ds_Dataset->Eof)
{
j++;
i_unvisible = 0;
for(int i=0;i<dbgrd->Columns->Count;i++)
{
if(!dbgrd->Columns->Items[i]->Visible)
{
i_unvisible++;
continue;
}
TField * tfd = ds_Dataset->Fields->operator [](i);
AnsiString colName = tfd->FieldName;
AnsiString colValue = ds_Dataset->FieldByName(colName)->AsString.c_str();
vSheet.OlePropertyGet((Variant)"Cells",(Variant)j+1,(Variant)i+1-i_unvisible).OlePropertySet((Variant)"Value",colValue.c_str());
}
ds_Dataset->Next();
}
}
catch(...)
{
bflag = false;
return bflag;
}
return bflag;
}
void __fastcall TForm1::btn_out_excelClick(TObject *Sender)
{
if(this->ClientDataSet1->RecordCount ==0 )
{
return;
}
Variant vExcelApp,vSheet,Workbook;
try
{
vExcelApp = Variant::CreateObject((Variant)"Excel.Application");
// 隐藏Excel界面
vExcelApp.OlePropertySet((Variant)"Visible", (Variant)false);
//建立一个新的excel文件
Workbook = vExcelApp.OlePropertyGet("WorkBooks").OleFunction("Add");
Workbook = vExcelApp.OlePropertyGet("ActiveWorkBook");//打开工作簿
Workbook=vExcelApp.OlePropertyGet("ActiveWorkBook");
Workbook.OlePropertyGet("Sheets",1).OleProcedure("Select");
vSheet=Workbook.OlePropertyGet("ActiveSheet");
if (Export_XLS(vExcelApp,Workbook,vSheet,this->ClientDataSet1,this->DBGrid1) == false )
{
vExcelApp.OleFunction((Variant)"Quit");
vSheet = Unassigned;
Workbook = Unassigned;
vExcelApp = Unassigned;
}
vExcelApp.OlePropertySet((Variant)"Visible", (Variant)true);
}
catch(...)
{
vExcelApp.OleFunction((Variant)"Quit");
vSheet = Unassigned;
Workbook = Unassigned;
vExcelApp = Unassigned;
}
}
BCB6 从TClientDataSet 和 TDBGrid 的内容里,导出Excel
最新推荐文章于 2017-05-05 17:52:00 发布