先提示一下,利用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插入图表相关推荐

  1. POI 控制 excel 生成图表的方式(二)

    主要尝试 vb.jni 调用 excel 的 图表.实现了两种方式. 一 . java调用 vbs 1.思路: java 调用 vbs, , vbs调用 excel的宏. 2.具体步骤: (1) 创建 ...

  2. 解决:当Excel插入图表,鼠标指向时,图一直闪烁,图标元素无法添加

    问题:当Excel插入图标,鼠标指向时,图一直闪烁,图标元素无法添加.如下图红框中. 解决方法:Excel加载项中取消"Foxit PDF Creator COM Add-in", ...

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

    一.POI 无法直接对 excel  图表进行操作. 官方文档描述如下: 二.通过在网上查找资料,可以通过以下三个方式实现. 第一种:自定义 excel 模版,在模版定义 图表 . 通过改变图表数据区 ...

  4. vfp控制excel使用sort_使用Python根据索引合并Excel表

    有两张不同大小的excel表 表1:字典的选项值,2118行 表2:字典名称,405行 表1和表2有共同的列. 现在需要根据共同的列,以表1为底,将表2的值对应添加到表1的每一行. 下面是代码: 1. ...

  5. tex插入excel图表_Excel:以编程方式插入图表。

    tex插入excel图表 As we all know that a Chart is a graphical representation of data. Charts help us to vi ...

  6. Excel/Word 插入图表 InvokeMember设置图表类型

    Msdn上详细介绍了如何操作new word,其中有介绍插入图表 //Insert a chart. Word.InlineShape oShape; object oClassType = &quo ...

  7. excel怎么更改坐标轴刻度_excel数值坐标轴刻度(excel表格插入图表里坐标轴的刻度能自定义设置吗)...

    怎么让excel表格坐标轴表上刻度 解决案: 1.图拖鼠标选要建立图标数据 2.菜单栏:插入--图选择种式 3.插入图表先点击纵坐标轴选看坐标轴四周现四圆叫做控制点 4.右键单击坐标轴选择[设置坐标轴 ...

  8. Excel学习笔记-图表(双向条形图、甘特图、饼图、往PPT中插入图表)

    目录: 一.制作双向条形图 1.设置主次坐标轴 2.设置条形图方向 3.设置图表背景 二.制作甘特图 1.制作普通甘特图 2.制作动态甘特图 三.饼图美化 1.饼图美化常见设置 2.制作双层饼图 四. ...

  9. 十三、在Excel中插入图表

    在Excel中插入图表 一.插入图表 1.选中数据:插入→图表(选择图表格式) 2.在图表旁边的绿色加号:用来添加相应的图表元素(图表标题.横纵坐标等).

  10. 怎样在单元格中插入图表_如何为Excel图表标签使用单元格值

    怎样在单元格中插入图表 Make your chart labels in Microsoft Excel dynamic by linking them to cell values. When t ...

最新文章

  1. oracle完全卸載,Oracle10g的完全卸載
  2. 什么是iu组装服务器,超频三全新款 IU服务器散热器全新登场
  3. 北师大网络教育计算机试题一的答案,北师大网络教育《专科英语一》作业3部分答案...
  4. JVM初学之类java的类加载器和双亲委派模型
  5. spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法
  6. windows下安装mongodb4.x版本
  7. python set_Python的set集合详解
  8. Android开启/关闭飞行模式命令
  9. poj 3074 Sudoku
  10. iOS 网络图片转为UIImage 和微信分享时缩略图片的压缩
  11. 项目启动 Injection of autowired dependencies failed
  12. 玩世不恭----进阶篇
  13. 显示一个立方体的两点透视投影图(用数组存放正方体的各顶点坐标)
  14. c语言坦克大战程序设计,C语言坦克大战源码分析
  15. 关于F4高级定时器死区时间的计算
  16. win7截屏快捷键未在计算机上运行,修复win7“截图工具当前未在计算机上运行”的方法...
  17. 图解Http协议 url长度限制
  18. LaTeX长表格自动换行(longtable)
  19. 揭秘:蓝光光碟“造”太阳能电池的神奇之处
  20. 单系统 台电x80pro_转载:台电X80 Pro Plus 刷Windows10单系统

热门文章

  1. 软件测试难不难?不是计算机专业也能学吗?
  2. 适用于高速公路的查询软件,数据稳定、免维护,可查询高速路况、路线规划、未来天气等信息
  3. 小小摩尔福斯之网络侦探
  4. HTML+CSS大作业:旅游网页设计与实现——旅游风景网站6页HTML+CSS+JavaScript实训大作业 HTML+CSS大作业 HTML期末大作业
  5. 王菲给师父打电话拜年,受高人指点,她扶摇直上联手天王横扫歌坛
  6. 创业投资——创新工场
  7. unity3d 毛笔笔锋
  8. 如何在Mac Finder中查找/Usr 路径?
  9. clang diagnostic
  10. Windows 7远程桌面 重启 关机 任务管理器 命令