ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.85KB ,
资源ID:10214260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10214260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++builder编数据库中的记录导出到excel.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++builder编数据库中的记录导出到excel.docx

1、c+builder编数据库中的记录导出到excel我正在用c+builder编写一个程序,想将数据库中的记录导出到excel中。请问用c+builder中的什么控件?代码如何写?首先把Excel报表文件保存到一个指定目录下,最好放在可执行程序的子目录下,作为模板文件。可以把报表标题、表头等设置好。这里是保存在trpt子目录下。然后建一个report目录,作为报表目标文件夹,存放填好数据的报表,可以由用户直接操作。首先确定在你的机器中装有Office。这里一Office2000为例。在C+Builder中新建一个工程,在窗体Form1上面放一个两个按钮SaveButton和ReadButton,

2、分别用来保存数据到Excel表和显示刚刚保存的Excel表。在SaveButton按钮的单击事件中把从数据库中取到的数据放入到指定的Excel表中并将改文件拷贝到report目录下。在ReadButto按钮的单击事件中显示report目录下的报表文件,方便用户修改和另外保存。在Form1.h头文件中定义几个变量:private:Variant Ex,Wb,Sheet,ERange,EBorders;并在文件头中包含如下语句:#include Excel_2K_SRVR.h#include 在Form1.cpp的文件头中加入#pragma link Excel_2K_SRVR主要代码如下:voi

3、d _fastcall TForm1: SaveButtonClick(TObject *Sender)trySaveButton-Enabled = false;ReadButton-Enabled = false;/使两个按钮无效file:/取报表文件CardSend.xls的完整目录名AnsiString ExcelFileName = GetCurrentDir()+trpttable.xls;if(!FileExists(ExcelFileName)Application-MessageBox(报表模板文件不存在,无法打开!,错误,MB_ICONSTOP|MB_OK);return;

4、file:/建立Excel的Ole对象ExtryEx = Variant:CreateObject(Excel.Application);catch(.)Application-MessageBox(无法启动Excel,错误,MB_ICONSTOP|MB_OK);return;file:/设置Excel为不可见Ex.OlePropertySet(Visible,false);file:/打开指定的Excel报表文件。报表文件中最好设定只有一个Sheet。Ex.OlePropertyGet(WorkBooks).OleProcedure(Open,ExcelFileName.c_str();Wb

5、 = Ex.OlePropertyGet(ActiveWorkBook);Sheet = Wb.OlePropertyGet(ActiveSheet);/获得当前默认的Sheetfile:/清空Excel表,这里是用循环清空到第300行。对于一般的表格已经足够了。AnsiString strRowTemp;AnsiString strRange;int iCols,iRows;/记录列数和行数/*从第三行开始,到第300行止。一般第一行是表标题,第二行是副标题或者制表日期。*/for(iRows=3;iRows300;iRows+) file:/假设只有6列。for (iCols = 1;iC

6、ols Open();/打开数据集file:/循环取数while(!Query1-Eof)file:/循环取字段的数据放到Excel表对应的行列中for(iCols=1;iColsFields-FieldsiCols-1-AsString;Sheet.OlePropertyGet(Cells,iRows,iCols).OlePropertySet(Value,strRowTemp.c_str();file:/画该行的表格边框strRange = A+IntToStr(iRows)+:F+IntToStr(iRows);ERange = Sheet.OlePropertyGet(Range,st

7、rRange.c_str();EBorders = ERange.OlePropertyGet(Borders);EBorders.OlePropertySet(linestyle,xlContinuous);EBorders.OlePropertySet(weight,xlThin);EBorders.OlePropertySet(colorindex,xlAutomatic);iRows+;Query1-Next();/while结束Wb.OleProcedure(Save);/保存表格Wb.OleProcedure(Close);关闭表格Ex.OleFunction(Quit);退出Ex

8、celfile:/定义目标文件名AnsiString DestinationFile =GetCurrentDir()+reporttable.xls;file:/将刚刚修改的Excel表格文件table.xls拷贝到report目录下if(!CopyFile(ExcelFileName.c_str(),DestinationFile.c_str(),false)Application-MessageBox(复制文件操作失败,Excel文件可能正在使用中!,错误,MB_ICONSTOP|MB_OK);return;Application-MessageBox(成功完成报表保存!n可以按打开Ex

9、cel文件按钮进行报表工作,提示,MB_ICONINFORMATION|MB_OK);SaveButton -Enabled = true;ReadButton -Enabled=true;/try结束catch(.)Application-MessageBox(操作Excel表格失败!,错误,MB_ICONSTOP|MB_OK);Wb.OleProcedure(Close);Ex.OleFunction(Quit);SaveButton -Enabled = true;ReadButton -Enabled=false;至此,完成报表数据的写入工作。如果要对完成的Excel表进行操作,可以点

10、击打开Excel表文件按钮(ReadButton),进行修改,保存,打印等操作。ReadButton的单击事件如下实现:void _fastcall TForm1: ReadButtonClick(TObject *Sender)tryfile:/指定report目录下的报表文件用于用户操作AnsiString ExcelFileName =GetCurrentDir();+reporttable.xls;if(!FileExists(ExcelFileName)Application-MessageBox(Excel表文件不存在,无法打开!,错误,MB_ICONSTOP|MB_OK);ret

11、urn;tryEx = Variant:CreateObject(Excel.Application);catch(.)Application-MessageBox(无法启动Excel,错误,MB_ICONSTOP|MB_OK);return;file:/使Excel可见Ex.OlePropertySet(Visible,true);file:/打开Excel表格文件Table.xlsEx.OlePropertyGet(WorkBooks).OleProcedure(Open,ExcelFileName.c_str();catch(.)Application-MessageBox(操作Exce

12、l表格错误!,错误,MB_ICONSTOP|MB_OK);Ex.OleFunction(Quit);本文来自CSDN博客,转载请标明出处:*/-把数据导出到Excel表中- try BitBtn10-Enabled=false; String filename1,filename2,strXlsFile; int pagenum; filename1=; /SaveD-FileEditStyle=; if(SaveD-Execute() filename1=SaveD-FileName;/+.xls; else filename1=d:daw50报表.xls; if(filename1!=);

13、 if(!DBGrid4-DataSource-DataSet-Active) / 数据集没有打开就返回 return; / 表格的行数 DBGrid4-DataSource-DataSet-Last(); int nRowCount(DBGrid4-DataSource-DataSet-RecordCount + 1); nRowCount = nRowCount 2? 2: nRowCount; / 表格的列数 int nColCount(39); nColCount = nColCount DataSource-DataSet-First(); for(int hlpnum=1;hlpn

14、um=filenum;hlpnum+) if(hlpnumfilenum) pagenum=pnum; else pagenum=nRowCount-(hlpnum-1)*pnum-1; /- filename2=filename1+0+IntToStr(hlpnum); strXlsFile=filename2; /= FILE * ofp; TStringList *HTMList; int FieldType10=0,0,0,0,2,0,0,0; bool ret; char *sFileName; char FileName200; sFileName=filename2.c_str(

15、);/./mytest.csv; sprintf(FileName,%s.xls0, sFileName); ofp=fopen(FileName,a+); if(ofp=NULL) ShowMessage(文件无法创建!); return; fputs(n, ofp);fflush(ofp);fputs(n, ofp);/ss=路段名称;/ fprintf(ofp, %sn, ss.c_str();ss=路段名称:;fprintf(ofp, %sn, ss.c_str();fputs(n, ofp);fflush(ofp);fputs(n, ofp); for(int j=0; j10; j

16、+) / 标题行的行高 /String ss; switch(j) case 0: ss=编号; break; case 1: ss=时间; break; case 2: ss=车牌号码; break; case 3: ss=总重; break; case 4: ss=限重; break; case 5: ss=超重; break; case 6: ss=速度; break; case 7: ss=人工车型; break; case 8: ss=自动车型; break; case 9: ss=轴数; break; case 10: ss=行使里程; break; case 11: ss=实际收

17、费; break; fprintf(ofp, %sn, ss.c_str(); fputs(n, ofp); for(int i=0; iDataSource -DataSet-FieldByName(vehNo)-AsInteger; Dtime=DBGrid4-DataSource -DataSet-FieldByName(datetime)-AsString; vehid=DBGrid4-DataSource -DataSet-FieldByName(vehid)-AsString; axlenum=DBGrid4-DataSource -DataSet-FieldByName(Tota

18、lNum)-AsInteger; /grnum=DBGrid4-DataSource -DataSet-FieldByName(AXleNum)-AsInteger; Totalweight=DBGrid4-DataSource -DataSet-FieldByName(Totalweigh)-AsInteger; / overld=DBGrid4-DataSource -DataSet-FieldByName(overld)-AsInteger; speed=DBGrid4-DataSource -DataSet-FieldByName(speed)-AsInteger; autotype=

19、DBGrid4-DataSource-DataSet-FieldByName(autotype)-AsString; handtype=DBGrid4-DataSource-DataSet-FieldByName(handtype)-AsString; / ts=DBGrid4-DataSource -DataSet-FieldByName(VEHTYPE)-AsString; if(axlenum=2&axlenumlimitweight) overld=Totalweight-limitweight; /- fflush(ofp); fputs(n, ofp); /- ss=IntToStr(vehno); fprintf(ofp, %sn, ss.c_str(); ss=Trim(Dtime); fprintf(ofp, %sn, ss.c_str(); ss=Trim(vehid); fprintf(ofp, %sn, ss.c_str(); ss=IntToStr(Totalweight); fprintf(ofp, %sn, ss.c_str(); ss=IntToStr(limitweight); fprintf(ofp, %sn, ss.c_str(); ss=IntToStr(overld); fprintf(ofp

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1