基于excel接口的vc++中的数据集成_第1页
基于excel接口的vc++中的数据集成_第2页
基于excel接口的vc++中的数据集成_第3页
基于excel接口的vc++中的数据集成_第4页
基于excel接口的vc++中的数据集成_第5页
已阅读5页,还剩1页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

基于excel接口的vc++中的数据集成

0数据报表的输入、输出在计算机科学中,另一方面,我们需要进行复杂的工程计算。另一方面,数据库中的数据需要以报告的形式输入和输出。VisualC++作为常用可视化编程工具,可以用来实现计算、灵活的用户界面设计和数据处理等功能,同时在代码效率和程序的执行效率上也是最高的。但在实现数据报表输入、输出方面,特别是涉及一些比较复杂的报表时不是很方便,很难达到满意的效果。Excel是Office家族中的优秀应用软件,功能强大,使用方便,是当今普及率高、应用最为广泛的表格处理软件。所以,实现在VisualC++应用程序中导出/导入Excel数据,具有很强的实用价值。VC++提供了多种接口来支持数据库编程,如ODBC、OLE/DB等,利用这些接口,可以在程序中直接操作各种数据库。OLE/DB(ObjectLinkedandEmbeddedDatabase)是基于COM接口的访问数据库的新技术,它提供了对包括关系数据库和非关系数据库在内的所有文件系统的统一接口。以下结合笔者在应用软件编程中的要求,对这一接口技术进行讨论。1特征函数和自动化服务端OLE(ObjectLinkingandEmbedding,对象连接与嵌入)技术是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM)。利用该组件不仅可以构建自己的应用程序,而且应用程序也可以通过开放一些组件的属性和方法,提供给其它应用程序使用。这里提供方法和属性的应用程序叫做自动化服务端;使用其方法和属性的应用程序叫做自动化客户端。自动化客户端和自动化服务端的交互如图l所示。Excel就是基于COM技术的应用程序,其它应用程序可通过编程,实现对Excel中的对象模型如Application、Workbook、Worksheet等进行操作。在VC++中实现Excel的自动化编程,一般要有以下几步:(1)初始化COM组件。(2)建立Application对象。(3)调用Application对象提供的方法和属性,实现自动化。(4)关闭Application对象。(5)取消COM组件的初始化。2kshees与raeen对象的设置Excel的对象模型如图2所示。其中Application对象表示整个应用程序,处于模型的最顶层。Workbooks对象作为所有Workbook对象的集合包含在Application对象中。Worksheets对象作为所有Worksheet对象的集合包含在Workbook对象中。Range对象包含在Worksheet对象中,是用来处理单个单元格或成组单元格的对象。在使用Excel对象前,必须要先插入Excel类,具体步骤如下:(1)在VC++中建立一个标准的基于Dialog的MFC工程。(2)从菜单view→classwizard弹开的对话框中,点击addclass选择fromtypelibrary,在Office的安装目录下引入excel.exe(这是Office2003的选择,其他版本都是用olb文件)。(3)在弹出的对话框中按照图2中的对象模型选择需要使用的类。3功能的实现3.1启动com的动态连接库在应用程序InitInstance()中的AfxEnableControlContainer()前加入以下代码:3.2mt格局memheet在对Excel进行操作处定义下面的对象:_Applicationm_ExlApp;Rangem_ExlRge;_Worksheetm_ExlSheet;Worksheetsm_ExlSheets;_Workbookm_ExlBook;Workbooksm_ExlBooks;注意,加下面的头文件:include″excel.h″include″comdef.h″3.3启动excel用m_ExlApp对象创建Excel进程:3.4使用excel文件(1)memp.attachdispatch加载Excel空白模板的方式,创建一个Excel文件Book1。m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)″″),TRUE);//加载Excel模板(2)nt或mtt-paramnortCStringstrPathName(″C:\Book1.exl″);//要打开的文件名COleVariantvr((long)DISP_E_PARAMNOTFOUND,VT_ERROR);m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks());m_ExlBooks.Open(strPathName,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr);(3)文件记录m_ExlBook.Save();(4)tionlmFileName=″C:\Book2.exl″;COleVariantcovOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);m_ExlBook.SaveAs(COleVariant(mFileName),av,av,av,av,av,0,av,av,av,av,av);3.5网络操作对于新建的Excel文件,缺省状态下,系统加载三个Sheet页面。对Sheet页面的操作有:添加页面,删除页面,页面更名。(1)ceok.加快了加快进入东南角m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);//加载Sheet页面m_ExlSheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing);(2)chmemhict.m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)2)),TRUE);m_ExlSheet.Delete();(3)m奥姆加快4.4.3.3.3.3.3m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE);m_ExlSheet.SetName(″TestSheet″);3.6单元格操作(1)t.关于variantt,为b.m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(″A1″),_variant_t(″D1″)),TRUE);//加载要合并的单元格m_ExlRge.Merge(_variant_t((long)0));(2)发生了加快进入+x-msm_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t(″姓名″));(3)最佳组合的确定RangemCell;COleVariantvResult;m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格mCell.AttachDispatch(m_ExlRge.GetItem(COleVariant((long)4),COleVariant((long)2)).pdispVal);//vResult=iCell.GetValue(vResult);(4)单元格内文本的生成m_ExlRge.AttachDispatch(m_ExlSheet.GetUsedRange());//加载已使用的单元格m_ExlRge.SetWrapText(_variant_t((long)1));//设置单元格内的文本为自动换行//水平对齐:默认=1,居中=-4108,左=-4131,右=-4152//垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107m_ExlRge.SetHorizontalAlignment(_variant_t((long)-4108));//水平居中m_ExlRge.SetVerticalAlignment(_variant_t((long)-4108));//垂直居中(5)ft.attachdispatch首先选择单元格,然后分别设置其字体、字号和颜色。Fontft;m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(″A1″),_variant_t(″D1″)));ft.AttachDispatch(m_ExlRge.GetFont());ft.SetName(_variant_t(″宋体″));//字体ft.SetBold(_variant_t((long)1));//粗体ft.SetSize(_variant_t((long)20));//字号ft.SetColorIndex(_variant_t((long)5));//字的颜色(6)性能ett.indespatchInteriorit;m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(″A2″),_variant_t(″D5″)));it.AttachDispatch(m_ExlRge.GetInterior());it.SetColorIndex(_variant_t((long)15));3.7程序重复运行此步工作相当重要,注意释放次序。特别是m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错。m_ExlRge.ReleaseDispatch();m_ExlSheet.ReleaseDispatch();m_ExlSheets.ReleaseDispatch();m_ExlBook.ReleaseDispatch();m_ExlBooks.ReleaseDispatch();m_ExlApp.ReleaseDispatch();4利用数据库导入数据库,将数据库导入数据格式。在数据库中实现数据库的应用,可以将数据库的内容导入数据库的设计,将所使用的数据纳入数据库的处理。根据数据库的数据进行二次处理和综合查询处理。根据数据库的内容,可将数据库的内容导入数据库的内容。将数据库的内容直接转化为数据格式的数据,可将数据库中的数据导入数据格式的内容。将数据库中的数据转化为数据格式的数据格式的数据格式的数据格式的数据。将数据库中的数

温馨提示

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

评论

0/150

提交评论