回 帖 发 新 帖 刷新版面

主题:如何在vfp中调用excel实现图、表的制作(之二)

言归正传。接下来谈谈vfp调用excel生成统计图形的问题。初学者可能以为这会是件很难的事情,其实还是很简单的,不必担心。你最好用一点儿数据自己先在excel中试试如何生成一个统计图:打开Excel输入一组数据,例如从A1-A5,从上往下输入100,200,150,223,152这五个数据,然后用鼠标点击A1不放拖至A5,这样就把A1-A5选中了。接着点击’图表向导’快捷键,在’图表类型’中选择’柱形图’,’子图表类型’就选择第一个,按’下一步’,在下一窗口中的’系列产生在:’选择’列’,因为我们的数据是从上往下按列摆放的。接着按’下一步’,进入新的窗口,在’图表标题’栏输入:各生产车间产量柱形图;在分类(X)轴栏输入:车间;在’数值(Y)轴’输入:产量。点击’下一步’,在’图表位置’窗口选中’将图表作为其中的对象插入’,点击’完成’按钮即可看见生成的柱形图形。
我们从vfp调用excel生成图表的角度来简单了解一下excel中的一些基本概念:
一.对象层次:(由高到低)
Application对象:它在excel对象结构中处于顶层。形象地说,双击Excel图表就相当于创建了一个Application对象。
     ↓
Workbooks对象:即工作簿对象(集),启动Excel后点击’新建’或’打开’快捷键就相当于创建或打开了一个Workbook。
     ↓
Worksheets对象:即工作表(集)。启动Excel后工作表集会自动默认含有sheet1、sheet2和sheet3这三个工作表。
Charts对象:    图表(集),与Worksheets对象同级
     ↓
Cells对象:表格(集),即我们看到的一个个格子。
Range对象:    是格子的一个范围,如上面的A1-A5,与Cells对象同级

二.VBA(Visual Basic Application):它是一种面向对象的程序语言,内嵌于Excel,Excel的各项功能都可以直接使用VBA进行操作。只不过Excel提供的各种菜单、快捷键和可视部件使一般人在操作上更容易接受,而VBA是用其代码来实现操作的,可以这么说Excel中的各项功能用VBA编程也无所不能。
三.宏:宏是一个指令集合,它可以使Excel自动完成用户指定的动作组合。而且宏的录制和执行也比较简单,并不需要用户具有任何编程经验或VB编辑器使用经历。最好大家能在Excel中(如用上面提到的数据)自行尝试一下怎样录制宏以及如何执行所录制的宏。

VBA采用与Visual Basic基本一致的语法结构,要学好也不容易。对VBA有深入了解欲望的朋友请参考有关书籍。不过用vfp调用excel需要掌握的VBA知识所幸不太多。

下面我们就来实际地看一段代码并把它敲入电脑并运行之,体会一下成功的喜悦并稍微有点成就感。

eole=CreateObject("excel.application")
eole.Workbooks.Add
xlSheet=eole.Sheets(1)
xlSheet.Cells(1,1).value="一车间"
xlSheet.Cells(1,2).value=100
xlSheet.Cells(2,1).value="二车间"
xlSheet.Cells(2,2).value=200
xlSheet.Cells(3,1).value="三车间"
xlSheet.Cells(3,2).value=150
xlSheet.Cells(4,1).value="四车间"
xlSheet.Cells(4,2).value=223
xlSheet.Cells(5,1).value="五车间"
xlSheet.Cells(5,2).value=152
fanwei="A1:B5"
XlSheet.Range(fanwei).select   
eole.Charts.Add  
eole.ActiveChart.Location(2,"Sheet1")
eole.ActiveChart.SetSourceData(Xlsheet.Range(fanwei),2)
eole.ActiveChart.ChartType = 51    && 换成55再试试
eole.ActiveChart.HasLegend=.T.
With eole.ActiveChart
  .HasTitle = .T.
  .ChartTitle.Characters.Text = '各生产车间产量柱形图'
  .Axes(1).HasTitle = .T.
  .Axes(1).AxisTitle.Characters.Text = '车间'
  .Axes(2).HasTitle = .T.
  .Axes(2).AxisTitle.Characters.Text = "产量"
EndWith
eole.DisplayAlerts=.F.
fname="c:\abc.xls"
eole.ActiveWorkbook.Saveas(fname)
eole.quit
rele eole,XlSheet
eole=CreateObject("Excel.application")
eole.Workbooks.Open(fname)
eole.visible=.T.
rele eole
return

进入vfp,在命令框内打入:modify command tx.prg ,然后敲入以上代码,核对无误后按Ctrl+w存盘,用do tx 运行。如果不成功可能是代码打错或你的微机未安装MS Excel。若因打错代码而失败请重启一下操作系统再试。代码是什么含义下回再说。      待续...

回复列表 (共5个回复)

沙发

谢谢,太好了.
真的很好用,最好能把表格设计讲一讲,

板凳

本文是应几个网友的要求胡乱写写,经本站版主的提醒,前已有类似帖子发表过。请关注者参照huangdehua版主有关回帖深入学习,故不再作续请包涵。谢谢各位!

3 楼

 可以继续写,这样很好啊,我有时间也学你,谈谈VFP+SQL SERVER2000做C/S程序的方法,年未了,工作忙

4 楼

能有一些具体的实例让我们学习学习吗?

5 楼

感谢Huangdehua版主的鼓励,我也很期待你的vfp+spl server2000编程大作尽早与网友见面。I'm looking forward to it!
明日把<之三>放上去。

我来回复

您尚未登录,请登录后再回复。点此登录或注册