时间: 2021-07-31 作者:daque
赵天平 microsoft excel动作一个功效宏大的电子表格处置软硬件,仍旧获得了普遍的运用。在数据库运用软硬件开拓进程中,即使能实行数据库与excel文献的数据调换,那么一上面能减少数据库数据的根源,另一上面也能简单用户对数据库数据的进一步处置。 c++ builder是一个可视化赶快运用步调开拓东西,它供给的ole automation体制使得开拓职员在运用步调中就能挪用excel,实行数据调换。 在c++ builder中挪用excel,开始要为excel创造一个ole东西,而后经过设定该东西的属性和挪用该东西的本领来安排excel。c++ builder经过createoleobject()来创造ole东西;用olepropertyset(propname,value)来树立ole东西的属性;用olepropertyget(propname)赢得ole东西的属性;经过olefunction(olefuncname,[val,...])和oleprocedure(oleprocname,[val,...])来挪用ole东西的本领。 c++ builder中运用ole机动化安排excel,必需控制excel的机动化东西及vba对于excel的东西本领和属性,那些都在microsoft office(实足安置)的vbaxl8.hlp扶助文献中不妨找到,在此就不复赘述。底下以将数据库中的数据转到excel处事薄中为例,证明c++ builder安排excel的简直本领。 开始兴建一个表单form1,生存单位文献unit1.cpp,生存工程文献project1.bpr。而后在表单中介入数据考察控件ttable,将name属性设为table1,databasename属性设为bcdemos,tablename属性设为country.db。在表单中介入一个按钮控件tbutton,将其name属性设为button1,caption属性设为 “变换为excel文献”。双击button1,在button1click()因变量中介入如次代码: variant ex,newxls; int i,j=1; try { ex=createoleobject(″excel.application″); //启用excel } catch(...) { showmessage(″没辙启用excel″); } ex.olepropertyset(″visible″,(variant)true); //使excel启用后看来 newxls=(ex.olefunction(″workbooks″)).olefunction(″add″);//兴建一个处事薄 table1-〉active=true; //翻开数据库 table1-〉first(); for(i=0;i〈table1-〉fieldcount;i++) //将字段名写到处事薄的第一条龙 { (ex.olefunction(″cells″)).olepropertyset(″item″,(variant)1,(variant)(i+1),(variant)table1-〉fields-〉fieldname); } while(!table1-〉eof) //将数据库中的记载顺序写到处事薄中 { j=j+1; for(i=0;i〈table1-〉fieldcount;i++) { (ex.olefunction(″cells″)).olepropertyset(″item″,(variant)j,(variant)(i+1), (variant)table1-〉fields-〉asstring); } table1-〉next(); } newxls.olefunction(″saveas″,(variant)filename); //生存处事薄,filename是处事薄的全文献名 ex.olefunction(″quit″); //退出excel,开释ole东西 提防,要运用ole机动化东西,在编写翻译之前还必需在unit1.cpp文献前方加上#include ″comobj.hpp″。 运路途序就不妨实行将数据库中的数据变换到excel处事薄中。同样的原因,运用olepropertyget()因变量,也不妨将excel处事薄中的数据读到数据库中去。 之上代码在windows 98操纵体例、c++ builder 3.0下调节和测试运转经过。