QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 57754|回复: 2
打印 上一主题 下一主题

c++builder如何和excel交换数据?

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 01:22 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>c++builder如何和excel交换数据?</P>
8 y7 s4 }( P  v; L/ c% _<>  </P>
9 a1 p8 l; W1 S* D5 O<>这是从网上下载的: </P>
# v* v; j) t; {<>Microsoft Excel作为一个功能强大的电子表格处理软件,已经得到了广泛的应用。在数 </P>
" i( X% s1 Q* T& N) l& y<>  </P>
) I" [4 O# y6 V<>据库应用软件开发过程中,如果能实现数据库与Excel文件的数据交换,那么一方面能增 </P>+ f! h3 y$ L) M7 ?
<>  </P>
. I! N+ F1 ^+ v<>加数据库数据的来源,另一方面也能方便用户对数据库数据的进一步处理。 </P>
$ m" {, l9 _/ j* w! V<>  C++ Builder是一个可视化快速应用程序开发工具,它提供的OLE Automation机制 </P>
9 g1 U% }9 d7 j<>  </P>. Y$ m6 S+ \. C. x' V$ N, E1 R
<>使得开发人员在应用程序中就能调用Excel,实现数据交换。 </P>
3 ~& P4 K; q" f<>  在C++ Builder中调用Excel,首先要为Excel建立一个OLE对象,然后通过设定该 </P>2 v/ P4 ~8 \7 `! ]
<>  </P>% z4 [& L  e' x3 w
<>对象的属性和调用该对象的方法来操纵Excel。C++ Builder通过CreateOleObject()来 </P>: p5 Q9 J! q! b" h% N* C
<>  </P>5 c4 L" f4 K+ K% Y
<>建立OLE对象;用OlePropertySet(propname,value)来设置OLE对象的属性;用 </P>. J+ F% B4 @) p: J1 k
<>OlePropertyGet(propname)获得OLE对象的属性;通过OleFunction(oleFuncName, </P>
. S# o5 l5 K( s; U5 g, |* z/ M/ S<>[val,...])和OleProcedure(oleProcName,[val,...])来调用OLE对象的方法。 </P>9 ?& W, ?& [5 S. a8 N% }# {
<>  C++ Builder中使用OLE自动化操纵Excel,必须掌握Excel的自动化对象及VBA关于 </P>
1 P8 i8 a5 h( x/ l# ]% w<>  </P># G7 v. M9 y& z: @: t2 B& P" i
<>Excel的对象方法和属性,这些都在Microsoft Office(完全安装)的VBAXL8.HLP帮助文件 </P>: k+ h0 P& c. n) `: z/ s  o& y2 O
<>  </P>) g# V% h0 l; Y8 }! H3 B+ G& q
<>中可以找到,在此就不再赘述。下面以将数据库中的数据转到Excel工作薄中为例,说明 </P>
: w$ M) P; t* q( G6 ^# u<>  </P>) D. x& L' Y# D5 M' z
<>C++ Builder操纵Excel的具体方法。 </P>
3 l/ J- Y. L$ x% t$ ]<>  首先新建一个表单Form1,保存单元文件Unit1.cpp,保存工程文件Project1.bpr。 </P>( Q! `# l3 {1 @( o- Y1 p9 E
<>  </P>: C/ E& p) n& Y" K# w0 ~6 `1 i4 h
<>然后在表单中加入数据访问控件TTable,将Name属性设为Table1,DatabaseName属性设 </P>
7 ~8 R% o$ @4 E7 V2 ?5 G<>  </P>7 h/ z; Q# q; [. U  A% |
<>为BCDEMOS,TableName属性设为Country.db。在表单中加入一个按钮控件TButton,将其 </P>( G' }9 ]7 W; F3 N8 q
<P>  </P>
1 F4 Y( C' b& x<P>Name属性设为Button1,Caption属性设为 “转换为Excel文件”。双击Button1,在 </P>4 f2 |; C$ {7 K6 I
<P>Button1Click()函数中加入如下代码: </P>
' S2 Q  x% z. K, n+ F1 D% v  j<P>   Variant ex,newxls; </P>
% L6 J; i# G$ W. h0 P. ]<P>   int i,j=1; </P>: @  X- k! f; N
<P>try </P>
3 e: R/ [$ i. J* \9 L<P>{ </P># W1 v# q, w" I7 {
<P>ex=CreateOleObject(″Excel.Application″); //启动Excel </P>! S1 o* J& Z% O  M, z4 e7 s
<P>} </P>
5 X. c' F* ~- s8 D0 [& P<P>catch(...) </P>! q: S& c( e7 R
<P>{ </P>
9 g1 P1 D, P/ ?! z<P>ShowMessage(″无法启动Excel″); </P>
) w7 x$ J1 G# c. X4 y/ N- t<P>} </P>( D; E( E0 Q9 O7 ^1 ]- l2 O
<P>   ex.OlePropertySet(″Visible″,(Variant)true); //使Excel启动后可见 </P>
9 y9 t" U: _7 g, ^<P>newxls=(ex.OleFunction(″Workbooks″)).OleFunction(″Add″);//新建一个工作薄 </P>
4 N2 H9 s6 z* p( Q<P>  </P>
; }$ a4 e2 O; e$ c0 ?. x! a<P>Table1-〉Active=true;   </P>1 a8 X9 o' {1 N
<P>  //打开数据库 </P>
/ X* k- N  U" t. M8 `<P>Table1-〉First(); </P>3 s9 T; c% _/ S0 m# R/ c6 o8 y
<P>for(i=0;i〈Table1-〉FieldCount;i++) </P>* f# }- l! L; H0 K
<P>  //将字段名写到工作薄的第一行 </P>
. y/ {. p2 n! _6 ~( Y* M& }<P>{ </P>3 r' U( Z/ i; Z# C7 j! M1 [
<P>(ex.OleFunction(″Cells″)).OlePropertySet(″Item″,(Variant)1,(Variant)(i+ </P>
5 L/ O: d; w8 E<P>  </P>. i& b, j( f  `2 L0 f
<P>1),(Variant)Table1-〉Fields-〉FieldName); </P>
% f6 S5 D* D9 }: @" \* [  q% L9 V8 M<P>} </P># w; ]0 _( G+ G8 Y8 f+ R& Z+ z
<P>while(!Table1-〉Eof) </P>2 _: h+ E9 a5 C! Z" F! u, T) _
<P>  //将数据库中的记录依次写到工作薄中 </P>; l9 d" w, d# }9 `
<P>{ </P>
# m; o: ^8 z- L0 b% `<P>j=j+1; </P>8 O! P' {8 D5 R
<P>for(i=0;i〈Table1-〉FieldCount;i++) </P>5 n% g4 j( f2 n5 [7 r$ q
<P>{ </P># ^/ H+ r8 c4 X" r
<P>  (ex.OleFunction(″Cells″)).OlePropertySet(″Item″,(Variant)j,(Variant) </P>: l: g$ |4 k9 ?( F6 W; ~
<P>(i+1), </P>
: N' k2 G1 ~7 x& H, B& D& H<P>  (Variant)Table1-〉Fields-〉AsString); </P>
2 s9 h  V3 J3 ^" H7 a<P>} </P>8 y' }0 R' Z9 D4 n
<P>Table1-〉Next(); </P>
/ ^  e$ l; c0 l! a& K$ Z* d<P>} </P>
7 t5 p$ j* M# q1 u: w% [" `<P>newxls.OleFunction(″SaveAs″,(Variant)filename); </P>
$ [: i: ?" ]0 S( v# H2 S8 U<P>  //保存工作薄,filename是工作薄的全文件名 </P>
1 Y, ^# X8 f9 S) o$ B  V1 h<P>ex.OleFunction(″Quit″); </P>1 f$ `  b1 }# G" U
<P>  //退出Excel,释放OLE对象 </P>' A/ y4 X/ g: x
<P>  注意,要使用OLE自动化对象,在编译之前还必须在Unit1.cpp文件前面加上# </P>
' a/ r6 ~+ Y. c. c& W<P>include ″ComObj.hpp″。 </P>
' M  p/ g! N& n' w<P>  运行程序就可以实现将数据库中的数据转换到Excel工作薄中。同样的道理,使用 </P>
0 Q- j* i1 U9 B8 C<P>OlePropertyGet()函数,也可以将Excel工作薄中的数据读到数据库中去。 </P>" k9 j0 @, H/ d, \5 L7 p, E
<P>  以上代码在Windows 98操作系统、C++ Builder 3.0下调试运行通过。 </P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
liunengwu 实名认证       

0

主题

3

听众

147

积分

升级  23.5%

该用户从未签到

自我介绍
我是一个数模爱好者,希望在数模中获奖!
回复

使用道具 举报

3#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-9-1 09:36 , Processed in 1.105321 second(s), 63 queries .

回顶部