现在的位置: 首页 > 综合 > 正文

VC创建EXCEL图表

2012年09月16日 ⁄ 综合 ⁄ 共 2824字 ⁄ 字号 评论关闭



 


EXCEL
中手动能够执行的操作,在
VC
下,都能通过
COM
提供的技术来实现,下面是我在工作中使用智能指针对
EXCEL

CHART
操作的一点肤浅的认识。如果对
VC
操作
EXCEL
一点都不了解的话,建议先看看我写的上一篇日志,了解一下
EXCEL
的结构,因为下面很多内容都是基于上一篇文章。

要想生成一张图表,首先要了解图表由哪些元素组成,才能准确的操作这些元素,通过下图来说明:

 





首先,图表的形态是由图表类型和数据决定的,相同的数据不同的类型,会表现出不同样式的图表,例如柱形图、饼图、折线图等等,上图是一个
XY
散点图;相同的类型不同的数据产生不同形状的图表。

以上图为例,
XY
散点图主要由图表区、数据系列、坐标轴组成,左侧的
Y
称作做“(主)数值(
Y
)轴”,右侧的
Y
轴称作“次数值(
Y
)轴”,同样的
X
轴也分为“(主)数值(
X
)轴”和“次数值(
X
)轴”。

在上图中看到两条曲线,表明此图有两个数据系列,数据系列可以被理解为一组相同属性的数据点组成的折线,用
EXCEL
帮助的解释是:每个


数据标志

 
(数据标记:图表中的条形、面积、圆点、扇面或其他符号,代表源于数据表单元格的单个数据点或值。图表中的相关数据标记构成了数据系列。)




都代表来自于工作表中的一个数字。具有相同样式的数据标志代表一个
数据系列




。一个数据系列通常由标题、数据(

X

)轴、数据(

Y

)轴组成。

创建这样一个图标的一般步骤是:

1.
      


创建一个图表;

2.
      


创建数据系列,为数据系列选择数据集;

3.
      


为数据系列选择坐标轴;

4.
      


设置各个元素的属性,包括标题,颜色,字体,样式等等。

简单的介绍了图表的组成之后,我们来看
VC
的操作。我们假定生成图表的数据来源于名为“
DataSheet
”的工作表。

第一步,创建一个图表。

_ChartPtr
pChart = pBook->Charts->
Add
();

pChart->
PutChartType
(
xlXYScatterLinesNoMarkers
);

和工作表集合一样,在一个工作薄中包含一个图表集合
Charts
,通过图表集合的
Add
()函数插入一个空的图表到工作簿中,
pChart
智能指针对象代表新插入的图表,然后设置图标的类型,参数

xlXYScatterLinesNoMarkers
是一个常量,表示“无数据点折线散点图”,更多的图表类型可以查阅
EXCEL
的帮助。

第二步,创建数据系列,为每个数据系列添加数据。

SeriesCollectionPtr
pSeriesCollection ;                      
//

数据系列集合指针
    


SeriesPtr
pSeries ;                                                  
//

数据系列指针

RangePtr
pRange ;                                                  
//

数据集合指针

_
WorksheetPtr
pSheet ;                                           
//


数据工作表指针

pSheet = m_pSheets->
GetItem
("DataSheet");            
//


得到数据工作表指针

pSeriesCollection = pChart->
SeriesCollection
();         
//


得到数据系列集合指针

pSeries = pSeriesCollection->
NewSeries
();                
//


新建一个数据系列

pRange = pSheet->Range["E2"]["E50"];                    
//

得到数据集合

pSeries->
PutValues
((Range*)pRange);                      
//


设置数据系列
Y
轴的数据

pRange = pSheet->Range["F2"]["F50"];                    
//

得到数据集合

pSeries->
PutXValues
((Range*)pRange);                    
//


设置数据系列
X
轴的数据

主要是三个方法的应用,在数据系列集合中创建一个数据系列,设置数据系列的
Y
轴和
X
轴的数据集合。新创建的数据系列默认是(主)数值(
Y
)和(主)数值(
X
)轴组成,就像例图中的电流数据系列那样,创建例图中的电压数据系列只需要比在上面的代码中添加一句:

pSeries->AxisGroup =
xlSecondary
;                         
//


当前数据系列属于次数值轴

第三步,设置各个元素的属性

数据系列
Series
有很多的属性和方法。

1.
AxisPtr

表示坐标轴。

AxisPtr
pAxis = pChart->Axes(
xlCategory
,
xlPrimary
);

pAxis->PutHasTitle(TRUE);                                    
//

设置坐标轴的标题可见

pAxis->AxisTitle->PutText(“
相对时间
”);                  
//

设置坐标轴的标题文本

通过
pChart

Axes
获得相应的坐标轴,第一个参数指定返回
X
轴,如果设为

xlValue
则返回
Y
轴;第二个参数表示返回坐标轴组,

xlPrimary
表示主坐标轴,
xlSecondary
表示返回次坐标轴。

下面代码比较简单,设置网格线的样式:

pAxis->MajorGridlines->Border->LineStyle =
xlDot
;

pAxis->MajorGridlines->Border->ColorIndex = 57;

pAxis->MajorGridlines->Border->Weight =
xlHairline
;

2.


PlotAreaPtr
表示图表区域。

PlotAreaPtr
pPA = pChart->
GetPlotArea
();                
//

获得图表区域指针

pPA->Interior->ColorIndex =
xlNone
;                       
//

图表区域的底色设置为空,即为默认的白色

最后
pChart->
Location
(
xlLocationAsNewSheet

,
"NewChart")


将刚才创建的图表作为一个新的工作表并命名为
NewChart


 

一张还算有点复杂的图表通过上面提到的方法基本可以实现。其他更多的操作,可以通过下面的方式了解如何操作。

开启
EXCEL
的“录制新宏”功能,操作
EXCEL
生成需要的图表,然后停止录制。打开
Visual Basic
编辑器



,在“模块”中可以看到
VB
代码,在
VC
中可以找到相对应的操作。

 

抱歉!评论已关闭.