VFP控制Excel插入图表

原创 2012年04月05日 07:53:11

先提示一下,利用Excel的宏录制,看看Excel怎么控制自己,是学习编程控制Excel的非常有效、简便办法。

 

言归正传。

Excel的图有两种:Chart和ChartObject。

如下图:


Chart在Excel里被称为图表工作表,在Excel对象层次里的地位与WorkSheet相当,插入一个Chart,是作为一张工作表插入的。

ChartObject被称为嵌入图表,它代表嵌入在表中的一块图,是插入在表中的一个对象。ChartObject实际上是一个容器类对象,它由其它多个对象共同组成,而且其中一个对象是Chart。

这说明Chart是ChartObject的基类(我这里的基类仅表达构成基础的意思,不是面向对象编程中基于此派生的意思)。

而我们直觉中ChartObject是嵌入在WorkSheet中的,那么ChartObject在对象层次中就应该比WorkSheet低一级。

但实际上ChartObject比WorkSheet的同级对象Chart还高了一级。

这种错觉其实上是编程的时候我们习惯按对象的作用来部署对象的层次造成的。(看样子要改变一下心智模式了。)

 

Chart和ChartObject还有另一层关联,那就是可以通过Chart的Location函数把Chart重新定位到一张工作表(WorkSheet)中,转变成嵌入对象ChartObject。

 

在微软提供的VFP的范例中,两种图表建立样板都有,这里只说ChartObject。

 

习惯上我们手工操作时先选取数据,再建图表。程序控制却恰好相反,是先建立图表,再指定数据源。请看代码:

#include "D:\Documents\Visual FoxPro 项目\微软常量\VBA 宏\Excel Constants.h"

loExcel = GetOBJECT( '','excel.application' )

cSourceFile = 'D:\Documents\Visual FoxPro 项目\test\服务业统计.xls'

loBook = loExcel.workbooks.Open( cSourceFile ) loSheet = loBook.WorkSheets( 1 ) loRange = loSheet.UsedRange    ** 作图在数据区域之外,下列代码用于确定大致作图位置。 lnLeft = 40 lnTop  = loSheet.UsedRange.Height + 4 * loSheet.Rows( 1 ).Height  lnWidth = 600 lnHeight = 480

loChartObject = loSheet.ChartObjects.Add( lnLeft, lnTop, lnWidth, lnHeight ) loChartObject.Chart.Chartwizard( loRange,xlLine,;  && 折线图。         4,xlRows,;    && 以行为系列。         1,;      && 分类标签。         1,;      && 系列标签。         .t.,;     && 显示图例。         '统计图',;    && 图表标题。           ,,) 

loSheet.ChartObjects是WorkSheet的一个函数,当该函数采用带参数的ChartObjects( Index )形式时,返回工作表中单个嵌入图表ChartObject对象。采用不带参数Index形式时,返回代表所有嵌入图表集合的ChartObjects 对象。

Excel里既有ChartObject、ChartObjects对象,又有ChartObjects函数,很容易混淆。请对照VBA帮助或微软的CSDN,仔细体会一下其中的区别。

 

接着我们改变一下Excel默认图表格式,以适应自己的特定情况。然后存盘退出。设想代码如下:

WITH loChartObject.Chart.Axes( xlValue )    && 调整数值轴单位。
     .ScaleType = xlLinear
   *.DisplayUnit = xlMillions
    .HasDisplayUnitLabel = .t.
    .TickLabels.NumberFormat = "#,##0"
ENDWITH 
loBook.Save
loBook.Close
loExcel.Quit
Release loBook, loExcel

我在测试过程中却出了问题,执行完DisplayUnit = xlMillions,存盘的时候就会收到OLE服务器抛出意外的提示。但只要一屏蔽DisplayUnit就什么问题也没有。而且家里和单位的电脑都一样,百思不得其解。大家试试看有没有同样的现象。 

无奈之下改弦易辙,打开Excel的宏录制,手工操作了一遍,然后模仿宏的步骤,把代码改成下面这个样子:

loChartObject.Activate
WITH loExcel.ActiveChart.Axes( xlValue )				&&	调整数值轴单位。
        	.ScaleType = xlLinear
	.DisplayUnit = xlMillions
        	.HasDisplayUnitLabel = .t.
       	.TickLabels.NumberFormat = "#,##0"
ENDWITH
	    
lxlApp.ActiveChart.PlotArea.Interior.ColorIndex = xlColorIndexNone	&&	无背景色。

大功告成。

 

(VFP9.0 + Excel2003)


 

相关文章推荐

VFP全面控制EXCEL

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在...

VFP全面控制EXCEL

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在V...
  • szyone
  • szyone
  • 2011年09月07日 15:36
  • 1294

VFP全面控制EXCEL(转自十豆三老师)

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在V...
  • dxnn520
  • dxnn520
  • 2012年05月16日 16:05
  • 5090

VFP_全面控制EXCEL

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在V...
  • szyone
  • szyone
  • 2013年07月04日 14:35
  • 1417

VFP 控制EXCEL语句汇编

  • 2010年01月21日 11:18
  • 87KB
  • 下载

VFP9 控制EXCEL命令大全

  • 2012年09月24日 16:28
  • 1.56MB
  • 下载

Excel VBA高效办公应用-第五章-销售数据的处理与分析-Part1(自动插入多张图表)

1. 对商品库存的需求分析 代码段1-计算需求量并影藏无关行 Public Sub DemandCalc() Application.ScreenUpdating = False '定义用...

将图表插入到excel

  • 2014年11月26日 09:39
  • 2.04MB
  • 下载

VFP全面控制EXCEL

  • 2014年09月16日 14:56
  • 376KB
  • 下载

POI 控制 excel 生成图表的方式(一)

一、POI 无法直接对 excel  图表进行操作。 官方文档描述如下: 二、通过在网上查找资料,可以通过以下三个方式实现。 第一种:自定义 excel 模版,在模版定义 图表 。 通过改变...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VFP控制Excel插入图表
举报原因:
原因补充:

(最多只允许输入30个字)