C++读写EXCEL文件方式比较

以前转了两篇关于C++操作excel的文章(vc访问excel的两篇文章),发现主要使用odbc Spreadsheet类。今天读了一下ole方式的文章:

一、C++读写EXCEL文件方式比较http://hi.baidu.com/ljsbuct/item/b9ffde0a92b5af92a3df43c8

1.OLE的方式(ADO方式类似)

这个大约是最常用的方式,这个方式其实启动了一个EXCEL的进程在背后读写EXCEL文件,这个方式的最大好处是什么事情都能做。包括设置EXCEL的格式,增加删除Sheet,读写单元格,等等。功能几乎是最全的,而且使用起来也不是特别的难。

其基本方法都是使用导出的.h文件进行OLE操作,但是由于OLE的接口说明文档不多,想非常完美的使用她们也不是太容易,好在例子也很多。

网上普遍认为OLE速度慢,EXCEL的OLE读写方式也基本一样。但是读取速度可以改进,如果在读取的加载整个Sheet的Range的全部数据,而不是一个个单元格读取,那么速度还是相对不错。想想原理也很简单,整体读取减少了OLE的交互次数。OLE的写入方式一般只能几个进行比较方便,所以速度可能要快很多。

我自己的亲身体会是,一个EXCEL文件,100多列的字段,如果采用一个个单元格的读取方式,1s大约3条左右的记录,如果整体读取,速度可以提高几十倍。

OLE读写EXCEL方式功能很强大,读取速度还可以,但写入速度不高,当然这个方式不可能移植的,而且你必须安装了EXCEL。

二、VS2010 C++ 操作Excel表格的编程实现

http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html

本文主要研究通过OLE/COM实现对Excel表格的操作。(本blog相关文章也可借鉴)

本文所导入的接口对应的类和头文件的说明如下所示:

 

Excel接口

导入类

头文件

说明

_Application

CApplicaton

Application.h

Excel应用程序。

Workbooks

CWorkbooks

Workbooks.h

工作簿的容器,里面包括了Excel应用程序打开的所有工作簿

_Workbook

CWorkbook

Workbook.h

单个工作簿。

Worksheets

CWorksheets

Worksheets.h

单个工作簿中的Sheet表格的容器,包括该工作簿中的所有Sheet

_Worksheet

CWorksheet

Worksheet.h

单个Sheet表格。

Range

CRange

Range.h

一定数量的单元格,可对单元格进行单个或多个单元格进行操作

 

 特别说明下,本文第3步有个纰漏,具体解决方法见http://blog.csdn.net/qin102qin/article/details/7548697

2. 操作Excel文件初始化: 

  • project->add class->MFC class from typelib (项目->添加类->Typelib中的MFC类)导入Excel.exe,一般都在C:/Program Files/Microsoft Office/Office12路径下(即选择你的office安装路径下的excel.exe加入)
  • 选中以下几项_Application,_WorkSheet,_WorkBook,WorkSheets,WorkBooks,Range,然后导入;
  • 导入后自动在工程中添加CApplication,CWorkSheet,CWorkBook,CWorkSheets,CWorkBooks,CRange这些类;

然后需要把这些类的头文件中的第一句话 #import ".......EXCEL.EXE" nonamespace 删除; (只保留CApplication中的,并按上文修改为3个#import)

在应用文件中引用以上头文件,引入之后如果编译遇到错误,Not enough actual parameters for macro ''DialogBoxW''. 让人头疼!

解决方法是在CRange类中,

  
  
1 VARIANT DialogBox() 2 { 3 VARIANT result; 4 InvokeHelper( 0xf5 , DISPATCH_METHOD, VT_VARIANT,( void * ) & result, NULL); 5 return result; 6 }

 

DialogBox()前面添加下划线变成_DialogBox(),解决了!

 

 三、C++使用OLE高速读写EXCEL的源码

OLE/COM实现对Excel表格的操作的封装类http://blog.csdn.net/fullsail/article/details/8449448

四、如何使用 MFC 和 Visual C++ 2005 或 Visual C++ .NET 嵌入并自动处理 Excel 工作表

SDI下使用OLE/COM实现对Excel表格的操作

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值