利用ado读取excel的问题.doc_第1页
利用ado读取excel的问题.doc_第2页
利用ado读取excel的问题.doc_第3页
全文预览已结束

下载本文档

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

文档简介

利用ADO操作Excel文件 今天花时间研究了一下ADO操作Excel文件的问题,跟大家分享一下:首先利用Excel2003创建了一个名为Demo.xls的文件,内容如下:NameAgeTY12TZL15然后打开VC,创建一个命令行应用程序。然后如一般的ADO程序一样编写相应代码,只是注意打开数据库的代码如下写:m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.xls;Extended Properties=/Excel 8.0;HDR=No;IMEX=1/,adModeUnknown);注意一下HDR,如果后面是No的话,表示ADO将不把你Excel文件的第一行作为字段名(此时使用默认字段名:F1,F2。以此类推,当然也可以用(LPCTSTR)m_pRecordset-GetFields()-GetItem(_variant_t)zz)-Name之类的代码来获得相应的字段名)。否则如上Excel文件的字段名将是Name与Age。另外是IMEX,如果设置了IMEX=1; 则通知驱动程序始终将“互混”(数字,日期,字符串等)数据列作为文本读取,同时这个选项有可能影响到excel表格拒绝写操作,也就是说,如果我们要求写入excel的话,这个选项不能被设置。接下来是打开记录集,代码如下(注意一下表名的写法):m_pRecordset-Open(select * from Sheet1$,_variant_t(IDispatch*)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);知道了字段名,打开了数据库跟记录集,随后的操作就跟普通ADO的操作一样了:读取操作:while(!m_pRecordset-adoEOF)_variant_t var = m_pRecordset-GetCollect(Name);if(var.vt != VT_NULL)_bstr_t strName = (LPCSTR)_bstr_t(var);var = m_pRecordset-GetCollect(Age);if(var.vt != VT_NULL)_bstr_t strAge = (LPCSTR)_bstr_t(var);string strMid = strName + - + strAge;coutstrMid.c_str()MoveNext();插入操作:m_pRecordset-AddNew();m_pRecordset-PutCollect(Name,_variant_t(zz);m_pRecordset-PutCollect(Age,_variant_t(23);m_pRecordset-Update();更新操作:m_pRecordset-MoveFirst();m_pRecordset-PutCollect(Name,_variant_t(zz);m_pRecordset-Update();删除操作:不支持!这也是感到很遗憾的地方。好在我们可以通过执行 update Sheet1$ set Name=NULL, Age=NULL where Name=zz 之类的SQL语句来实现类似功能。当然,你要知道的是,这一行并没有真正删除掉,所以通常在select的时候要进行一定的筛选,例如:select * fromSheet1$ where Name is

温馨提示

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

评论

0/150

提交评论