主题:以下代码总是出错,大师们知道咋整不?(关于EXCEL的)
海军
[专家分:5350] 发布于 2007-08-21 17:54:00
eole.Charts.Add && 添加一个图形对象,准备绘图
eole.ActiveChart.Location(1,"Sheet1") && 生成的图形内嵌于指定工作表。2:表示内嵌;1:表示图形单列不内嵌
[color=FF0000]上面这句就出错:OLE错误码0X800a03ec:未知的com状态代码.下面各句也常出错误,并且每次出错的地方和错误名称还不一定一样,各位大师知道是什么原因不?怎么调整呀?谢谢!![/color]
eole.ActiveChart.SetSourceData(xlsheet.Range(fanwei),2) && 指定绘图数据源。其中的2表示数据是按列摆放;2表示按行摆放
eole.ActiveChart.Location Where:=1
*-------------------------------------------------------------------------------------------------
eole.ActiveChart.ChartType = 51 &&54为3D柱图 73 为折线 && 非立体折线图
*-------------------------------------------------------------------------------------------------
eole.ActiveChart.HasLegend=.T. && 不显示图例
If Thisform.pageframe1.page3.check1.Value=1
eole.ActiveChart.ChartTitle.Characters.Text =Alltrim(Thisform.pageframe1.page2.combo1.DisplayValue)+"日经营情况统计图"
Else
eole.ActiveChart.ChartTitle.Characters.Text =Alltrim(Thisform.pageframe1.page3.combo1.DisplayValue)+Alltrim(Thisform.pageframe1.page2.combo1.DisplayValue)+"日经营情况统计图"
Endif
回复列表 (共20个回复)
沙发
海军 [专家分:5350] 发布于 2007-08-21 18:12:00
为了让大家容易看明白,我将以上程序简化一下:
eole.Charts.Add && 添加一个图形对象,准备绘图
eole.ActiveChart.Location(1,"Sheet1") && 生成的图形内嵌于指定工作表。2:表示内嵌;1:表示图形单列不内嵌
eole.ActiveChart.SetSourceData(xlsheet.Range(A1:B8),2) && 指定绘图数据源。其中的2表示数据是按列摆放;2表示按行摆放
*-------------------------------------------------------------------------------------------------
eole.ActiveChart.ChartType = 51 &&54为3D柱图 73 为折线 && 非立体折线图
*-------------------------------------------------------------------------------------------------
eole.ActiveChart.HasLegend=.T. && 不显示图例
eole.ActiveChart.ChartTitle.Characters.Text ="日经营情况统计图"
板凳
moz [专家分:37620] 发布于 2007-08-21 21:23:00
"Sheet1" 改成 eols.sheets("Sheet1") 看行不行,
其实我多次在EXCEL里加入图片对象时都会出错,
在VFP里好像不知道指的是哪个图片对象,
而在EXCEL里却不会出现问题.不明白具体原因.
3 楼
海军 [专家分:5350] 发布于 2007-08-21 21:51:00
谢谢。还是出错:OLE 错误码 0x80070057:The parameter is incorrect
(参数是不正确的)
4 楼
moz [专家分:37620] 发布于 2007-08-21 22:35:00
关于[color=ff00ff]&& 生成的图形内嵌于指定工作表。2:表示内嵌;1:表示图形单列不内嵌[/color]
我看了一下帮助,
1 应该是新建表,后面一个参数是新建的表名
2 应该是已有表,后面一个参数是必选,是现有的表名
假如你的表Sheet1是已经存在的话,应该把1改成2,否则新建一个跟已存在的表Sheet1同名的表,是会出错的.
不把1改2,那就应该把表名 Sheet1 改成不与其他表同名的其他表名看看.
以上纯属个人猜测,本人不负任何责任,别乱扣帽子,也不需要鸡蛋和西红柿.
5 楼
海军 [专家分:5350] 发布于 2007-08-22 00:14:00
谢谢moz老师。我将这个参数删除,问题解决。
后面还有很多报错的地方,先不去管了,主要功能实现了,就可以了。以后有时间再解决吧。
6 楼
cbl518 [专家分:57140] 发布于 2007-08-22 05:49:00
Eol=CREATEOBJECT('Excel.Application')
WITH Eol
.WorkBooks.Add &&新建工作簿
.SheetsInNewWorkbook=2 &&建立 2 个空工作表
*** 在第一个工作表中设计图表需要的数据
WITH .Worksheets("Sheet1")
.activate
&&给单元格赋值的形式:(第一列是:X轴数据;第二列是:Y轴数据)
.cells(1,1).value='综合'
.cells(2,1).value='电脑'
.cells(3,1).value='技术'
.cells(4,1).value='网络'
.cells(5,1).value='软件
.cells(1,2).value=5000
.cells(2,2).value=4000
.cells(3,2).value=3000
.cells(4,2).value=6000
.cells(5,2).value=2000
ENDWITH
***以下是作图部分:
.Charts.Add && 添加一个绘图对象
WITH .ActiveChart
* 标题系列:
.HasTitle = .T.
.ChartTitle.Characters.Text = "日经营情况统计图"
.Axes(1, 1).HasTitle = .T.
.Axes(1, 1).AxisTitle.Characters.Text = "x轴说明"
.Axes(2, 1).HasTitle = .T.
.Axes(2, 1).AxisTitle.Characters.Text = "Y轴说明"
.HasLegend=.F. && 不显示图例
*** 指定数据所在的工作表和数据范围:
.SetSourceData( Eol.workSheets("Sheet1").Range("A1:B5"),2) && 绘图数据源
.Location(2,"Sheet2") && 将图表转移到指定的第二个工作表中。
ENDWITH
.ActiveChart.ChartType=51 && 指定绘图类型
.Visible=.T.
***删除vfp中的对象。
Eol=.null.
RELEASE Eol
ENDWITH
7 楼
cbl518 [专家分:57140] 发布于 2007-08-22 05:58:00
由于我理解不清你的说明,不知道你需要哪些功能!
所以按你 2楼的解释作图。
如果要其它的功能,你只要详细说明就行,不必附代码。
我建议你直接在 vfp 中,调用该作图对象的控件。
该控件带有打印的功能。
8 楼
海军 [专家分:5350] 发布于 2007-08-22 11:53:00
十分感谢cbl518老师的耐心解答,您是我学习的榜样.
以上问题经您讲解清楚了很多.主要问题已解决.再次表示感谢.
还有一些设置颜色\位置等语句,常出错,不知道什么原因.比如:
With aole.ActiveChart &&以下关于图表标题操作,自定义名,颜色,字体大小,粗体。
.IncrementLeft="-48.75"
Endwith
With aole.Selection
.MarkerBackgroundColorIndex = 2
.MarkerForegroundColorIndex = 1
.MarkerStyle = 4
.Smooth = .T.
.MarkerSize = 3
.Shadow = .F.
Endwith
等,不过已无大碍.
关于,使用图表控件问题,我认为我还是先用EXCEL吧.这样用户可以保存,可以打印,可以看到数据表.虽然不够专业,但感觉比用控件友好些.再者,我对这个控件不是很了解,还要从头学起.
我的软件没有用报表,所有表格都是用的EXCEL,感觉还算可以,就是速度太慢了.不知大师们有什么看法.
9 楼
cbl518 [专家分:57140] 发布于 2007-08-22 16:36:00
***以下是作图部分:
.Charts.Add && 添加一个图形对象
WITH .ActiveChart
* 标题系列:
.HasTitle = .T.
WITH .ChartTitle
.Characters.Text = "标题"
.Interior.ColorIndex = 7 && 背景区域颜色
.AutoScaleFont = .T. && 对象内文本随对象大小,而改变字体大小
WITH .Characters.Font && 标题字体对象
.Name = "楷体_GB2312"
.FontStyle = "加粗"
.Size = 22
.Strikethrough = .F. && 删除线
.ColorIndex = 5 && 字体颜色索引号
ENDWITH
ENDWITH
.HasDataTable = .T. && 显示数据表
.DataTable.ShowLegendKey = .T. && 显示图例标志
.Axes(1, 1).HasTitle = .T.
.Axes(1, 1).AxisTitle.Characters.Text = "x轴说明"
.Axes(2, 1).HasTitle = .T.
.Axes(2, 1).AxisTitle.Characters.Text = "Y轴说明"
.HasLegend=.F. && 不显示图例
.SetSourceData( Eol.workSheets("Sheet1").Range("A1:B5"),2) && 绘图数据来源
.Location(2,"Sheet2") && 将图表转移到指定的工作表中。
ENDWITH
.ActiveChart.ChartType=51 && 指定绘图类型
.Visible=.T.
Eol=.NULL.
RELEASE Eol
ENDWITH
10 楼
lwh1188 [专家分:25840] 发布于 2007-08-22 22:58:00
还是cbl518答得精彩!还那句话---实在是高!
我来回复