CadCaeCam.com是目前CAD/CAE/CAM/PLM类专业网站中,用户最多,技术含量最高的网站之一, 涵盖目前所有常用的C3P类软件技术讨论。

C3P专业门户

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 30884|回复: 84

[推荐] CAA ODBC 连接excel的方法

  [复制链接]
发表于 2008-3-19 20:32:11 | 显示全部楼层 |阅读模式
加入头文件:6 ~9 L' B+ V! \
#include "afxdb.h"
, y. T4 P: T$ I" n- ^4 h#include "odbcinst.h"6 r# P/ D( y+ i

9 A3 m( d/ X2 i8 N0 H6 ~# U    CDatabase database;3 j: ~2 Y) T2 g# P$ s
  CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动' s% D! d3 X0 s2 S5 D& H4 O
  CString sExcelFile,sPath; " |5 t4 A; N# t& b/ z
  CString sSql;9 c1 ^% D3 }& ^
  
! @2 f) f. }0 ~' v6 C8 y6 ?" D  //获取主程序所在路径,存在sPath中! L. T( f2 R! n; ^$ P
  GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);7 B# J- }2 q# [4 i# I
  sPath.ReleaseBuffer ();
% Y& R2 I9 l+ p% m3 M3 Z1 t" P  int nPos;
" z. ~8 Q' U6 M& b7 v' o$ L9 H9 `: \9 k$ ^+ i  N- E. m
  nPos=sPath.ReverseFind('\\');% y* Y; `' T' d7 f
  sPath=sPath.Left (nPos);/ c) r- Q$ Q  t1 t5 t
  nPos=sPath.ReverseFind('\\');
( e. {0 k- E& F  sPath=sPath.Left (nPos);# F, s% A* }2 h4 s
  nPos=sPath.ReverseFind('\\');) y: k. K$ e0 J. b( V
  sPath=sPath.Left (nPos);
# p! ?6 B. W2 k, g- U  
; U( p4 u/ n0 D/ ?  sExcelFile = sPath + "\\拱圈参数.xls";    // 要建立的Excel文件4 j) r9 ^# w$ H0 t6 ~5 o; g

! ~9 U, A/ t+ w- q" |9 f  CATTry
3 r1 d% [# K& @2 S; R: s0 `  o  {0 d  n) b" Y/ j
    // 创建进行存取的字符串
$ m' ^. p7 Q2 X6 q6 t% ^) }    sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, sExcelFile, sExcelFile);
, g6 ~0 ~! p; m! F0 d$ [5 I' H4 q6 A    3 t* l* K+ J8 _) O, O$ w$ |8 e# C
    // 创建数据库 (既Excel表格文件)
( h- ^* C0 g# w& }    if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
+ o: `+ B! K3 {8 m+ S6 ^$ c    {9 y. g: e$ P4 I
      // 创建表结构(姓名、年龄)1 i& w+ W8 q7 s7 @* Z8 m* V
      sSql = "CREATE TABLE Exceldemo (Name TEXT,Age NUMBER)";/ r( {3 c% f( X7 x1 `
      database.ExecuteSQL(sSql);
; i: o- L3 H0 Q8 k3 P" Q      & y! e" h  Y' r/ G$ P% T$ F! c( i7 K$ A
      // 插入数值
- |4 e/ c  z; F      sSql = "INSERT INTO Exceldemo (Name,Age) VALUES ('徐景周',26)";
2 A3 w' `& p0 s; [' }0 z& u1 Z      database.ExecuteSQL(sSql);
1 p$ a3 \& N2 s' o1 U      : }) e. ?& i. \# D8 G. ?
      sSql = "INSERT INTO Exceldemo (Name,Age) VALUES ('徐志慧',22)";) Z5 n8 u) F5 Z3 P" i
      database.ExecuteSQL(sSql);8 G$ f1 i6 m. g" T3 Z3 m
      
3 U& B/ c6 z, }/ ^8 p      sSql = "INSERT INTO Exceldemo (Name,Age) VALUES ('郭徽',27)";
$ s: h' F2 }) ~      database.ExecuteSQL(sSql);
* B/ G7 ?2 L( j; ^    }   8 K8 q% k6 M3 C- H; |- `% G9 ]5 ?
      l. Y) M4 J7 W- [6 j$ |2 X
    // 关闭数据库. _4 K4 r5 @5 p! D. [
    database.Close();  
" c4 x; \' {# s, t% f1 d  }. y  ^+ i+ a' ^: \
游客,如果您要查看本帖隐藏内容请回复

! y/ B" R$ {. c. n' N上面的代码仅仅是抛砖引玉,修改网上已有的一个例子的数据类型,有需要的同仁可以修改Cstring.Formit函数,更改传说中的CSpreadSheet,就可以完美的实现在window系统中对excel的操作了,它的效率远远高于用caa自带的excel读取函数。
发表于 2008-3-20 08:51:06 | 显示全部楼层
支持,帮顶一个
发表于 2008-3-20 11:46:54 | 显示全部楼层
好文章,我已经给你加精华了
发表于 2008-3-21 11:01:13 | 显示全部楼层
好东西,需要顶一个。
发表于 2008-3-23 12:24:30 | 显示全部楼层
See see
发表于 2008-4-3 09:10:13 | 显示全部楼层
丁一下!
发表于 2008-4-30 15:58:17 | 显示全部楼层
顶一个
发表于 2008-5-6 11:15:23 | 显示全部楼层
看看
发表于 2008-5-6 13:41:38 | 显示全部楼层
询问:CATCatch能够捕捉到database连接过程中的error?
发表于 2008-7-6 16:43:55 | 显示全部楼层

回复 7# fisher 的帖子

有新的进展么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|CadCaeCamPlm专业门户网站 ( 蜀ICP备05008798号 ) 网站速度测试

GMT+8, 2019-5-20 03:56 , Processed in 0.094365 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表