CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  BCB茶馆

请老妖接分: http://community.csdn.net/Expert/topic/4794/4794374.xml?temp=.396908

楼主fengread(马甲)2006-06-02 08:16:45 在 C++ Builder / BCB茶馆 提问

请教问题: DBGrid   数据倒出为   Execl文件  
  在妖哥网站 http://www.ccrun.com/article/go.asp?i=635&d=g75jbn 得到答案。  
  感谢daydayup234(关中刀客)指路。  
  希望妖哥看到后来收分! 问题点数:40、回复次数:12Top

1 楼daydayup234(关中刀客)回复于 2006-06-02 09:05:24 得分 10

别吵醒大斑竹了。我给你,应该可以直接用:  
   
  //代码整理自ccrun.com  
  void   Tmain_::DBGrid2Excel(TDBGrid   *dbg,   AnsiString   strXlsFile)  
          {  
              if(!dbg->DataSource->DataSet->Active)return;//数据集没有打开就返回  
              Variant   vExcelApp,   vSheet;  
              try{vExcelApp   =   Variant::CreateObject("Excel.Application");}  
              catch(...)  
              {  
                  MessageBox(0,   "启动   Excel   出错,   可能是没有安装Excel.",  
                  "DBGrid2Excel",   MB_OK   |   MB_ICONERROR);  
                  return;  
              }  
              //   隐藏Excel界面  
              vExcelApp.OlePropertySet("Visible",   false);  
              //   新建一个工作表  
              vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add",   1);   //   工作表  
              //   操作这个工作表  
              vSheet   =   vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets",1);  
              //   设置Excel文档的字体  
              vSheet.OleProcedure("Select");  
              AnsiString   dbgName(dbg->Name);  
              vSheet.OlePropertySet("Name",dbgName.c_str());  
              vSheet.OlePropertyGet("Cells").OleProcedure("Select");  
              vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size",dbg->Font->Size);  
              vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name",dbg->Font->Name.c_str());  
              vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("FontStyle",   "常规");  
              vSheet.OlePropertyGet("Cells",1,1).OleProcedure("Select");  
              //   表格的行数  
              DMOD_->IBDataSet1->FetchAll();  
              int   nRowCount(dbg->DataSource->DataSet->RecordCount);  
              nRowCount=nRowCount<2?2:nRowCount;  
              //   表格的列数  
              int   nColCount(dbg->Columns->Count);  
              nColCount=nColCount   <   1?   1:   nColCount;  
              //   设置单元格的宽度  
              for(int   i=0;   i<nColCount;i++)  
              {  
                  int   nColWidth   =   dbg->Columns->Items[i]->Width;  
                  vExcelApp.OlePropertyGet("Columns",   i   +   1)  
                  .OlePropertySet("ColumnWidth",   nColWidth   /   7);  
              }  
              //   先将列名写入Excel表格  
              for(int   j=0;   j<dbg->Columns->Count;   j++)  
              {  
                  //   标题行的行高                                                                                        
                  vExcelApp.OlePropertyGet("Rows",   1).OlePropertySet("RowHeight",20);               //dbg->Columns->Items[j]->FieldName.c_str()  
                  //  
                  vSheet.OlePropertyGet("Cells",1,j+1).OlePropertySet("Value",dbg->DataSource->DataSet->Fields->Fields[j]->DisplayLabel.c_str());  
                  //   设置列名单元格的背景色  
                  Variant   vInter=vSheet.OlePropertyGet("Cells",1,j+1).OlePropertyGet("Interior");  
                  vInter.OlePropertySet("ColorIndex",15);   //   灰色  
                  vInter.OlePropertySet("Pattern",1);   //   xlSolid  
                  vInter.OlePropertySet("PatternColorIndex",-4105);   //   xlAutomatic  
              }  
              //   将DBGrid中的数据写入Excel表格  
              dbg->DataSource->DataSet->First();  
              for(int   i=0;   i<nRowCount;   i++)  
              {  
                  //   普通数据行的行高16  
                  vExcelApp.OlePropertyGet("Rows",   i   +   2).OlePropertySet("RowHeight",   16);  
                  //   63   63   72   75   6E   2E   63   6F   6D  
                  DMOD_->IBDataSet1->FetchAll();  
                  for(int   j=0;   j<dbg->Columns->Count;   j++)  
                  {  
                      vSheet.OlePropertyGet("Cells",i+2,j+1)  
                      .OlePropertySet("Value",  
                      dbg->DataSource->DataSet->FieldByName(  
                      dbg->Columns->Items[j]->FieldName)->AsString.c_str());  
                  }  
                  dbg->DataSource->DataSet->Next();  
              }  
              //   保存Excel文档并退出  
              vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs",strXlsFile.c_str());  
              vExcelApp.OleFunction("Quit");  
              vSheet=Unassigned;  
              vExcelApp=Unassigned;  
              //   工作结束  
              AnsiString   s;  
              s=ExtractFileName(strXlsFile);  
              s="Excel文件“"+s+"”生成,数据转换备份结束!";  
              MessageBox(0,s.c_str(),"数据备份保存",   MB_OK|MB_ICONINFORMATION);  
          }Top

2 楼fengread(马甲)回复于 2006-06-12 09:42:32 得分 0

谢谢了!Top

3 楼BlueDeepOcean(蓝色·深海)回复于 2006-06-12 11:15:27 得分 0

晕。Top

4 楼hellolongbin(一个人(自从扩充话题改版,再也不去灌水乐园了))回复于 2006-06-12 12:38:55 得分 4

老妖说让我替他接分^_^Top

5 楼ccrun(老妖)(www.ccrun.com)回复于 2006-06-12 12:40:17 得分 6

茶馆的分,请大家随便接。呵呵。Top

6 楼haiqian119(海嵌)回复于 2006-06-13 10:25:05 得分 4

接分!  
   
  C++   Builder   数据库及相关技术  
  http://community.csdn.net/Expert/topic/4794/4794374.xml?temp=.396908   还是留给老妖...Top

7 楼daydayup234(关中刀客)回复于 2006-06-13 10:30:00 得分 0

妖帮主硬被“黄袍加身”啊,  
  应该去收分  
  却之不恭   哈  
  Top

8 楼BlueDeepOcean(蓝色·深海)回复于 2006-06-13 14:30:54 得分 4

那我也来凑凑热闹。接分了!Top

9 楼stevenjscn(小胖)回复于 2006-06-13 15:38:39 得分 4

接分。Top

10 楼wxch(wxch)回复于 2006-06-17 14:53:38 得分 4

接分!Top

11 楼liangqingzhi(老之)回复于 2006-06-17 15:06:20 得分 4

蹭分Top

12 楼truelove7283159(大头娃娃http://traversite.blog.sohu.com)回复于 2006-07-28 11:35:23 得分 0

upTop

相关问题

关键词

得分解答快速导航

  • 帖主:fengread
  • daydayup234
  • hellolongbin
  • ccrun
  • haiqian119
  • BlueDeepOcean
  • stevenjscn
  • wxch
  • liangqingzhi

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo