C++ Builder 将数据库数据导出到Excel中总结2

void __fastcall TFrmDispatchDataExport::DisplayExcelReport(String _title, String _strSql)
{
 int i=0;
 Variant ExcelApp1,WorkBook1,Sheet1;
 AnsiString FileName=GetCurrentDir();
 FileName=FileName+"\\Template\\DispatchReport.xlt";
 // run excel
 try
 {
  ExcelApp1=CreateOleObject("Excel.Application"); //启动Excel
 }
 catch(...)
 {
  ShowMessage("Can not start excel");
  return;
 }

 // open InOrderTo.xlt
 ExcelApp1.OlePropertySet("Visible",(Variant)false);
 ExcelApp1.OlePropertyGet("WorkBooks").OleFunction("Add",(WideString)FileName.c_str());
 WorkBook1=ExcelApp1.OlePropertyGet("ActiveWorkBook");
 Sheet1=WorkBook1.OlePropertyGet("ActiveSheet");
 String Str_Title="";
 Str_Title=Str_Title+"                        "+_title;

 // print Inordermst info
 Sheet1.OlePropertyGet("Cells",1,6).OlePropertySet("Value",(WideString)Str_Title);
// Sheet1.OlePropertyGet("Cells",3,7).OlePropertySet("Value",FrmMain->UserParameters->GetOperatorID().c_str());
// Sheet1.OlePropertyGet("Cells",3,9).OlePropertySet("Value",FrmMain->GetSysDateTime().DateTimeString().c_str());


 // print InOrderdtl info
 qryExport->Close();
 qryExport->SQL->Clear();
 qryExport->SQL->Add(_strSql);
 qryExport->Open();
 qryExport->First();

 int nPos = 0;
 int nStep  = 0;
 int nRecordCnt = qryExport->RecordCount;
 if ( nRecordCnt > 0 )
 {
  nStep = ceil(nRecordCnt/100.0);
  pbExport->StepBy(1);
 }
 statOARBar->Panels->Items[1]->Text = IntToStr(nRecordCnt) ;
 int iRows = 0;
 for(iRows=6;iRows < qryExport->RecordCount+6;iRows++)
 {
  if( bIsStop ){break;}
  Sheet1.OlePropertyGet("Rows",iRows+1).OleProcedure("Insert");
  Sheet1.OlePropertyGet("Cells",iRows,1).OlePropertySet("Value",iRows-5);
  for(int iCols = 1;iCols < qryExport->FieldCount;iCols++)
  {
   if( bIsStop ){break;}
   String strValue = qryExport->Fields->Fields[iCols-1]->AsString.Trim();
   Sheet1.OlePropertyGet("Cells",iRows,iCols+1).OlePropertySet("Value",(WideString)strValue);
  }
  ++nPos;
  if ( nPos%nStep == 0 )
  {
   pbExport->StepIt();
   Application->ProcessMessages();
  }
  qryExport->Next();
 }
 Sheet1.OlePropertyGet("Rows",iRows).OleProcedure("Delete");
 Sheet1.OlePropertyGet("Rows",iRows).OleProcedure("Delete");
 ExcelApp1.OlePropertySet("Visible",(Variant)true);
}

 

备注:需要一个模板文件:DispatchReport.xlt   ,该段代码是将创建的Excel默认是不显示的,当你操作完成后,会显示,这样你可以手动保存或者不保存。由用户决定,我个人认为这个比较好一些,代码清晰而且简单。希望大家有不清楚的地方和我联系:QQ:1574203887 或者邮箱:chao_song2011@sina.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C Builder 是一个用于开发 Windows 应用程序的集成开发环境(IDE),它支持使用 Object Pascal 或 C++ 进行编程。C Builder 提供了多种方式来将数据库数据导入到应用程序。 首先,C Builder 提供了对多种数据库管理系统(DBMS)的支持,例如 MySQL、Oracle、SQL Server 等。我们可以通过使用 C Builder 提供的数据组件来连接数据库并执行查询。可以使用 TADOConnection 或 TIBDatabase 等组件来建立与数据库的连接。然后使用 TADOQuery 或 TIBQuery 等组件进行查询操作,获取数据库数据。 其次,C Builder 提供了数据集组件,例如 TDataSet 和 TClientDataSet。可以使用这些组件来在应用程序创建虚拟的数据集,然后利用数据连接组件将数据库数据填充到数据。通过设置 SQL 查询语句或使用视图来筛选需要的数据。然后可以在应用程序直接对数据集进行操作和展示。 另外,C Builder 还支持使用第三方数据库访问技术,例如 ADO(ActiveX Data Objects) 和 dbExpress。可以通过使用这些技术来连接和操作数据库数据总结起来,C Builder 提供了方便易用的数据连接、查询和操作功能,可以通过使用数据组件、数据集组件或第三方技术来导入数据库数据。这些功能使得开发人员能够轻松地将数据库数据集成到应用程序,实现数据的查询、展示和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值