1 Excel组件对象模型     
Microsoft Office Excel 2003文档中的数据是高度结构化的,因此Excel对象模型也具有层次结构并且简单明了。Excel 提供了数百个您可能需要与之交互的对象,但是最为重要的是以下四个对象:Application 对象、Workbook 对象、Worksheet 对象和Range 对象。很多工作都是围绕这四个对象进行的。
Application 对象。Application 对象表示 Excel 应用程序本身。Application 对象提供了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例中打开的当前用户的对象的信息。
Workbook 对象。Workbook 类表示 Excel 应用程序内的单个工作簿。Application 类的许多成员同时也是 Workbook 类的成员。在这种情况下,属性应用于特定的工作簿(而非应用于活动工作簿)。
Worksheet 对象。虽然 Worksheet 类提供了大量成员,但大部分属性、方法和事件都与 Application 和/或 Workbook 类提供的成员相同或相似。Excel 提供 Sheets 集合作为 Workbook 对象的属性,但 Excel 中没有 Sheet 类。实际上,Sheets 集合的每个成员不是 Worksheet 对象就是 Chart 对象。
Range 对象。Range 对象是 Excel 应用程序中最常用的对象。在能够处理 Excel 内的任何范围之前,必须将它表示为 Range 对象,并处理该对象的方法和属性。Range 对象表示一个单元格、一行、一列、包含一个或多个单元格块(可以连续,也可以不连续)的单元格选定范围,甚至多个工作表中的一组单元格。
对于Microsoft Office Excel 2003,通常可以在..//Microsoft Office//OFFICE11// EXCEL.exe获得相关接口类。常用的有_Application, Workbooks, _Workbook, Worksheets, _Worksheet, Range,以及用于生成图表的_Chart等。

另外,使用MS Graph对象的技术同样可以生成数据图表。但是,对象写入大数据量非常缓慢的。MS Graph工作原理是每写入一个数据就要对图表进行更新,因此,MS Graph对于小数据制作图表是合适的(实现代码比EXCEL要少),但对于大数据这种工作原理是难以忍受的。尽管如此,EXCEL与MS Graph的接口函数却是非常相似的。

2 Excel启动与退出     
使用Application 对象,关联接口、释放接口。具体代码如下:
_Application theExcelApp;
theExcelApp.CreateDispatch("Excel.Application", NULL); //关联接口
退出
theExcelApp.Quit();  退出
theExcelApp.ReleaseDispatch();  //释放接口

3 Excel打开记事本(*.txt)         
通常,我们需要从文本(*.txt)文件中载入数据。Excel的Workbooks对象提供了打开文本的函数OpenText ()。OpenText()函数声明如下:
OpenText(LPCTSTR Filename, const VARIANT& Origin, const VARIANT& StartRow, const VARIANT& DataType, long TextQualifier, const VARIANT& ConsecutiveDelimiter, const VARIANT& Tab, const VARIANT& Semicolon, const VARIANT& Comma, const VARIANT& Space, const VARIANT& Other, const VARIANT& OtherChar, const VARIANT& FieldInfo, const VARIANT& TextVisualLayout, const VARIANT& DecimalSeparator, const VARIANT& ThousandsSeparator, const VARIANT& TrailingMinusNumbers, const VARIANT& Local)
参数说明如下:
Filename 文本路径。
Origin 文件原始格式。通常值为936,表示简体中文。
StartRow 导入起始始行。在本报告中第一行为标题行,导入起始行为2。
DataType 数据类型。值设为1。
TextQualifier 文本格式。值为1。
ConsecutiveDelimiter 连续分隔符。值为TRUE
Tab Tab分隔符。值为FALSE。
Semicolon 分号分隔符。值为FALSE。
Comma 逗号分隔符。值为FALSE。
Space 空格分隔符。本电子报告中通常以空格作为分隔符,因此值为TRUE。如若采用其他分隔符,请适当修改。
Other 其它分隔符。值为FALSE。
OtherChar 其他文本识别符号。值为NULL。
FieldInfo 区域信息。同载入文本列数据格式相关。设为VarOpt。
TextVisualLayout 文本可见版式。设为VarOpt。
DecimalSeparator 小数分隔符。设为VarOpt。
ThousandsSeparator 千位分隔符。设为VarOpt。
TrailingMinusNumbers 按负号跟踪负数。设为TRUE。
Local 本地数据。设为VarOpt。
以上各参数请根据适当需要修改,并根据调试VBA宏代码获得参数值。
要说明的是,这种方法载入数据将从B列往后分布。即,如果是TXT文本里有两列数据,那么载入EXCEL后,这两列数据将分布在B列与C列,而A列为空。这个原因我也一直不得其解(不知道是我们合作方提供的TXT文本本身设置问题还是别的问题)。这点请读者注意,也请高手指点。

4 获取Excel行数目      
载入记事本数据后,需要调用_Worksheet对象获得数据的行数目。具体代码如下:
_Worksheet ::GetUsedRange();
获得已用区域,返回Range对象。注意,这里不能调用_Worksheet ::GetRange();
Range:: GetRows(); 
获得行对象。返回Range对象。
Range:: GetCount();
获得行数目。
获得行数目在进行生成图表是很重要的。在生成图表时,载入源数据的区域时需要获得行数目。

5 生成Excel图表及格式          
使用对象。以下要设置其格式。
_Chart:: SetChartType 设置图表类型。如果使用无数据点平滑线散点图,值为73。其它图表类型请自己录制VBA宏然后调试获得参数值。
_Chart:: SetSourceData生成图表的原数据。传递一个Range对象。
_Chart:: SetHasLegend 标注。设为FALSE,不显示标注。
_Chart:: SetHasTitle 标题。设为TRUE,显示标题。
并假设获得行数目为432,则SetSourceData的参数值为Range(“B1”, “C432”)。

如果需要对网格线进行格式控制,需要调用以下函数:
_Char::Axes 返回Axis对象
Axis::SetHasMajorGridlines 设置主格线,TRUE
Axis::SetHasMinorGridlines 设置次格线,FALSE
Axis::GetMajorGridlines 获得主格线对象(前提是设置主格线为TRUE),返回Gridlines对象
Gridlines::GetBorder 获得边框对象,返回Borders对象
Borders::SetColorIndex 设置颜色,57表示黑色
Borders::SetLineStyle 设置线条格式,-4118表示虚线
Borders::SetWeight 设置粗细
以上Borders各参数值可根据需要适当修改。

Axis::SetCrossesAt 可设置坐标轴相交位置。通常需要Axis::GetMinimumScale获得最小刻度值,然后相交于最小刻度值。

6 设置标题文字及曲线格式    
使用AxisTitle ,,Font对象设置文字,包括设置文字上标等。注意,Excel并不提供类似于Word的Selection对象,要进行文字格式控制,通常需要用到Characters对象,即对指定文字进行格式控制。
使用Series,Borders对象可对曲线进行控制。可利用_Char:: SeriesCollection返回一个Series对象。

7 保存     
使用_Workbook:: SaveAs函数。具体参数值设置较为简单,参看VBA宏代码即可。此处略。

8 命名空间namespace     
由于许多Word的对象与Excel对象的名字是相同的,因此,必须使用名字空间将其区分。命名空间的使用方法很简单,在.h和.cpp文件分别添加
namespace mynamespace
{
   //Statement;
}
把名字有冲突的类的声明与实现放入namespace的作用域里。然后调用类是前面加命名空间作用符。
举例如下:Word和Excel都有_Application对象,如果不使用命名空间则会发生编译错误。
可在excel.h添加
namespace myExcel
{
     class _Application : public COleDispatchDriver
{
   //Statement;
}
}
在excel.cpp将所有_Application的方法放入到命名空间中。
namespace myExcel
{
(_Application的方法实现代码)
}
调用Excel的_Application对象类时,使用方法为
myExcel:: _Application _myExcelApp;
即声明该_Application属于myExcel命名空间作用域。
关于命名空间在C++教材的“高级主题部分”会有涉及。

EXCEL篇及命名空间说明相关推荐

  1. Office 2016 for Mac试用之Excel篇

    Office 2016 for Mac试用之Excel篇 2015年3月,微软终于为Mac用户发布了全新的Office 2016,同时提供了Office 2016 for Mac的下载预览版,此次的预 ...

  2. Excel 批量处理行高(图文教程) - Excel篇

    Excel 批量处理行高(图文教程) - Excel篇 Excel如何批量统一行高或列宽? 鼠标拖一下,就能解决! 操作如下: 打开Excel文档,通过鼠标拉选或Alt+鼠标左键 选择目标操作行: 然 ...

  3. Asp.net高效导出excel篇之Aspose导出excel

    上周在博客中写了一篇<Asp.net高效导出Excel篇>在发布之后收到很多热心网友的建议--使用Excel第三方引擎如NOPI.Aspose.cell等导出Excel,优点:效率高.不需 ...

  4. python自动化办公:excel篇,从此做表不加班。

    表格讲解 表格格式 表格分为:工作簿,工作表,单元格 如图:整个文件就是一个工作簿,下面的 zhengjiang_power 和sheet1为工作表. xlrd +xlwt读写表格 因为电脑右键新建的 ...

  5. python自动化测试报告_python自动化测试报告(excel篇)

    原博文 2018-05-19 08:42 − 转:https://www.jianshu.com/p/6c5d328bf390 # -*- coding: utf-8 -*- import xlsxw ...

  6. 本工作簿不能再使用其他新字体_1.2.16 EXCEL篇之关于工作表的操作合集

    本篇的开始,还要从复制一个表格说起... 相信不少童鞋复制一个表格到其他工作表,都是以下的操作:框选表格→复制粘贴到目标工作表→调整行高列宽,如下图所示 可以看到这样简单粗暴地直接复制粘贴过去,新表的 ...

  7. 自动化办公-excel篇 openpyxl的使用详解

    本章介绍excel自动化办公--openpyxl库的使用.我觉得openpyxl是一款轻量级的excel操作库,适合用于一些基本的操作构建,如果涉及批量处理数据,如求一整列的最大值最小值等,无疑是pa ...

  8. PowerBI(Excel)提取Web数据-PowerQuery系列文章之十(Excel篇)

    现在有个非常有名的词语,就是爬虫.爬虫使用的最为广泛的使用方法是Python,但是你知道吗?Excel 也能够做爬虫,PowerBI也可以做爬虫.这个在很多人的意料之外了.我们本篇文章就和大家谈谈如何 ...

  9. 分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇

    使用Rank函数来做数据排名 该函数是返回一个数值在一个数字列表中的排名. 语法:RANK(number,ref,order) =RANK(对象,范围,参数) number(必填参数):是特定单位格中 ...

最新文章

  1. 逆向工程、软件后门……原来美剧《硅谷》里藏着这么多知识点
  2. pandas 常用操作
  3. 【设计模式:单例模式】使用单例模式加载properties文件
  4. Java常见面试题之类的加载过程
  5. 西瓜书+实战+吴恩达机器学习(四)监督学习之线性回归 Linear Regression
  6. fatal error: alsa/asoundlib.h: 没有那个文件或目录
  7. PKM全民推广系列三:PKM搜索
  8. Java集合框架讲解【泛型、Collection接口、Map接口、以及子接口和实现类、集合的遍历形式等】
  9. Python语言程序设计 嵩天
  10. 【工具用法】Linux登录吉林大学校园网教程(以deepin为例)
  11. 【汇编】intel core cpu中常用的寄存器
  12. 21个免费设计网站助力第十一届全国大学生广告艺术大赛!
  13. PyTorch学习(二):Transform
  14. java 雪崩效应,七、微服务架构中的“雪崩效应”
  15. 最新!Win10安装Mysql 5.7.22免安装版的图文教程(路过太多的坑了)
  16. Phalcon框架的访问控制列表 ACL(Access Control Lists ACL)
  17. Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法
  18. 华三光纤交换机默认密码和重置方法
  19. 4G蓝牙信号(广播包)采集器
  20. 解决backtrack5连接不上ssh问题

热门文章

  1. 表格通用样式el-table的表头颜色样式,表内边框行高样式,点击行高亮变颜色
  2. 论文投稿指南——中文核心期刊推荐(贸易经济)
  3. java输出各种三角形(*表示)
  4. Photoshop蒙版投射
  5. 苏州迅芯微电子 招聘FPGA开发工程师
  6. Windows API Hook
  7. 《算法思维——一种问题驱动的思维方式》之第9篇:数据结构之动态栈篇——采用JavaScript编程语言实现
  8. Maven —— 生命周期
  9. gulp4.0构建自动化项目
  10. JS获取滚动条到底部得距离