如何利用VC++自动生成Excel表格_第1页
如何利用VC++自动生成Excel表格_第2页
如何利用VC++自动生成Excel表格_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、| 维普资讯 编視器难问题解答!| 维普资讯 | 维普资讯 QUESTION & ANSWER©鼻 如何利用v c +十自动生成欣“1表格 憲格1!右亚观,清嘶誓特点*因此在许多领域获骨了 眨的应用 H rVl. Kxeel 应用凰广的屋格处理软件,在工 程设il"、需蟹生成大处怖我格,在这种情况下*希望直桂将 计算踣果输人到EZ 丧格中川提商设汁虜就及效率,因此 讨论皿“I茂培的自动主感方袪貝有较丈的实用价值世屋利用Visud C + + MFC捉供的ODBC骊动类来宣现肘 F>cel黄榕的操件ODBC对数站曄的访间过程可出分为:三亍阶 段:甘先坠确定评连接

2、皴摇嫌+然后径依弼程序需曹选定井修 由,更新数据源中凶某些数据记录*址G晁示数据源的更新结 果.MFC 用三个类(CDatabweh C RecordSet t C Record View)有力 地网装这二个阶段中对数据库讲冋所需的R乎所有方法及属 性、EDbmMht鉴完诚程胖与-个数脳冉的连接出保肓连摆屈CKdSet类用干对数關进行査洵或更新操作:CRcmlVicw 用于-显示对数据库操作的结罠:这个莞幹自完成一定功能.又相顷联系作用.共同完成 对数攥库妁坊问披程,菽中.SatBb聲对貌与CRecordSet对 象是应用裡掙不町或峡的“而OteOHtlVi斥对象的有无可以檢 据用户的需叢血宦

3、-若用户需耍就示数据源更新结果.则可以 ffl CRwordVi对象所提供的界面“若稈序只是利用数据諒更 新的结果耐无须显示更新的数關.或程序开龙者有自己講意的 数据显示力式,就可L乂不用CRpcordView对象更通过ODRCM接读、写Exeel表格文件.首诜.应确保 ODBC中已安装有Excel表格立ft的軀动-MICROSOFT EXCEL DRFVEK ( * . XF5" 5I. ODBC Lj Efccftl文件的连接创建一靳tvcel X件樓I代码如下;CDatabase database;CStrfngsDriver = 'MICROSOFTEXCEL DRI

4、VER ( * XLS)"/Excel左装驱动CStringsExceJAle = H: WtesK "罢建立的 Excel 文件 CString sSqlrsSql. Formal* DRIVER = %s: DSN = FlflSTROWHAS- NAMES =1; READONLY tFALSE; CREATE_PB - '%s DBQ - %s sDriverr sExcelHIe, sExcelFile;if (! database. OpenExtSql, C Database; * ncOd be Dialog)MessageBoxr创建Exc創表略失

5、败! "数据庫错课J; return;)打开-亍规仃的臥训文件.樓心代码如下;CDatabase database;CStrjng sDsn;CStnng sFile = -Test.xls? 将被读取的 Excel 丈件名筍建进行再取的字符串sDsn Format( ODBC; DRIVER = s; DSN = HDBO = %s", sDrfver. sFilek/n开数据库(K Excel文件)database. Open (NULL false, false, sDsn2.表格的创建如杲要在Ewl小创建一亍新的衣町利用SQJStniHurfdQiier- lang

6、uage)语言来完J® CdulaKase 类中的 Exe£UteSQL() 函数能够在VC+十中嵌A SQL交点数据表交点编号半径JDM3TW2.0007W.OOO1000120JTM4477058-0003114.0001200140如塑犀立一个如上忑所禾的镶跻愛点鬣据壷陪,具方拔如 F:CString sSql;/创建表结构I姓名'年龄sSql = * CREATE TABLE JdTable t 交奈编号 TEXTr 纬距 NUMBER. 经距NUMBER,半径NUMBER,缓和曲线长NUMBER)"database, ExecuteSQLf sS

7、qi)./插入数値sSql = "INSERTINTOJdTable咬点编号.纬甌 经距.半径,缓 和曲线41 VALUES ( JD443 77372. 000, 7846. QOOJ000, i2or:database. ExecuteSQL(sSq3);sSql = -INSERTINTO Jdhbl蓟交金骗号.纬甌经距.半径.缓 和曲线长)VALUES ( JD444 77058. 000. B114.000, 1200, MW;database. ExecuteSQL(sSql);丿/关闭数据库database. Ciose(3敕懈査训财虫新完成垢目标数搦阵的连接荷.为了能

8、辔奁呦或更新数懈库 中体个表"可利ffj Cre<oixlSfl奘的相应甫数完成时籾摇库中表 的査闻或樂新操作口-t CrecordSei对象犹表从氏标数据源中选出一条圮童的 叢合,该类的成员函数可以对这个集汙进行杳询戏犯新撫作、CstringqCellL sCel!2. sCeU3. sCell4, sCellS;C Recordset recset (& data base >/设監读取的宜询语句,sSql二SELECT交点編号纬跖,经距,半连缓和曲线长FROMJdTable4;"执行查询语旬recset. OpenCRecordset : orwa

9、rdOnly. sSql, CRecordset: ;rwedOnly I:/获取查询结果while (E recset. IsEOFf| 维普资讯 | 维普资讯 Xx mg 289、tn理技巧与糧护| 维普资讯 实用第一智慧密集| 维普资讯 | 维普资讯 F7读廖Excel内部数匾recset. GetFietdValuet "交点编号:sCelH;recset. GetFieldValueC纬距)sCell2):recset. GetFiddValue忙经距:sCell3;recset. GetFieldValueC半径:sCeil4);recset. GetFieldValue

10、r sCelbJ:/移到下一行recset. MoveNext ();"英尿数据库database Close i);对表格数粧的直新可通过在比曰血旳口 i餉数中调用SQ1.中的Up血便诱句加完成*其用法与谦搭前创弦类似.不 再赘述°f惟者t蒋红!O<?*总样使用Visual陥血 宏址理Fscel垣复记录O介缁一种随用Visual IJie宏处理电夏记录的厅法.该方扶灵活方楼.值宙推操作歩骤如卜首先*打幵一份带有奁具记录的耳呵Jtrt-如图丨听 斥.我阴梅苦为羣蚁记吊A1 *号2 >)0103030110 -劳为004030301 tD j"20aiD

11、3030na$' ?iD(Ha3Cl3O11O E DD4D3Q3OnO 7030X110 J 'DtMtHOSOl 11 '9"!5OEMO30GD1?1 '10 004030301 ia 'll 00103030118 'l?加MO3EI3D11 呂ia U 004030301 is 巧-沁Boaoiig "16 403030119 1? !200J0303Q229严空JQ4D30302R呀'04030302291_0040303023252 乜0040303023423 00403030

12、234 24403030234 rM4030J0234BCD保程号羊卷bnoioe电孫哩谊&5活号与系足35tnioii2応号与至统35teicma肃叔电子找栄基础迪36T131O110横拥电干袪术璋335till 012t觀宇电于枝术SiHA35tJ31Q26T阿诣詡信樱序设计2切263网堀作爭酗宝艶r 亠11110112住号与至统35SllDlll馆宰与手规35T131011Ser拭电干农帘蔓础q3.5tiaioiie横伏.电于快术哥就A3.51)310262网堵褂作秦或芙验2tllDH:35t)31D11B樓和电干社十蔓础A35T)31D26t玛竭通值理呼设廿213310262网

13、肖律作萃统实故2t3lD2B3申业丈刀3D31D2E4年业设计11*)31 DI 03赵桥廩理与揍口护啊40110112值号与手址351)110112伍号与爭址55tl3l02£fi越向对裁扶术与VE诒35V3?0i206回向35图1原蛤记录SLQ :s *._JC 2 t E 6 6 2 6 6 7 0 & 4 6 it 6 6 6|«9引DI3莊紙常幄修幡睡序修使修修修燈懈傭祕修懈修«懈1¥擀 必蛙必必必从必必也必必必必必樂必心必必送必釧必必然后,按<LT 4- VI1仃开VU编辑胖f执祈“ “工程资源背理器”命令,选中ThE珊orkh

14、皿.我右迪的代码输人下面的代码土Sub*找亟复数据门'查找cd列和cole列的蚩复数据一本例是查我様懸为Sheeil的EXCEL 中亘和B到下从第2紆开蜡)重更数摒Application. Screen Updating = False可根提实际惜况谬改下面三行的结尾值Dim sheetsCsption As String; sheetsCaptson = 'Sheet 1"Dim Col As String: Col = A"Dim Cole As String: Cole = "B"一增设一空列为找到的重复记录做标记本例甲G列Dim

15、Cclz As String: Colz = "G*Dirn StrtRow A& Integer: StartAow = 2'叹下可很据实厢要比较的其樂字參少谊行修改D<m End Row As Integer; E ndR ow = Sheets (sheetsCapxio n)Range (Col & '65536. End(xlUp). RowDim CountJ As Integer: Count_1 - 0Dim count_2 A& Integer: count_2 = 0Oim i As Imeger; i - Start

16、RowWith S heet s shee tsCapt io n)DoCount_1 = Counv_1 十 1Forj - StartRowToi - 1if. Range (Ccl& i = . Range (Col & j And Rangef Cole& 0 = Range Cole & j) ThenCount J = Caunt.1 - 1End Row Sheet st sheets Cap dorij , Range (Coi & "6553J. EfidlxlMp,Rowcounts = counV2 + 1.Rang&am

17、p;f Colz& f) - count2.Range(Colz& jl = count_2Exit ForEnd IfNexti = i + 1Loop While i < EndRow + 1End WithMsgfiox -共有& CountJ & 条车車复的数抿MsgSox -找到& county & 傑重复的数弼”Application. Screen Updating = TrueEnd Sub出上代码在t:l也J03下闻试迪过 刑別Kxcel表*执行 “丁.具“菜单一 “宏"-“底"命令+述择-Bndbook. 貢找亚复数AT这棊宏.然行按“执行”即可"对如图听示 的记录"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论