回 帖 发 新 帖 刷新版面

主题:以下代码总是出错,大师们知道咋整不?(关于EXCEL的)

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个回复)

沙发

为了让大家容易看明白,我将以上程序简化一下:
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 ="日经营情况统计图"

板凳

"Sheet1" 改成 eols.sheets("Sheet1") 看行不行,

其实我多次在EXCEL里加入图片对象时都会出错,
在VFP里好像不知道指的是哪个图片对象,
而在EXCEL里却不会出现问题.不明白具体原因.

3 楼

谢谢。还是出错:OLE 错误码 0x80070057:The parameter is incorrect
(参数是不正确的)

4 楼

关于[color=ff00ff]&& 生成的图形内嵌于指定工作表。2:表示内嵌;1:表示图形单列不内嵌[/color]

我看了一下帮助,
1  应该是新建表,后面一个参数是新建的表名
2  应该是已有表,后面一个参数是必选,是现有的表名

假如你的表Sheet1是已经存在的话,应该把1改成2,否则新建一个跟已存在的表Sheet1同名的表,是会出错的.
不把1改2,那就应该把表名 Sheet1 改成不与其他表同名的其他表名看看.

以上纯属个人猜测,本人不负任何责任,别乱扣帽子,也不需要鸡蛋和西红柿.

5 楼

谢谢moz老师。我将这个参数删除,问题解决。
后面还有很多报错的地方,先不去管了,主要功能实现了,就可以了。以后有时间再解决吧。

6 楼

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 楼

由于我理解不清你的说明,不知道你需要哪些功能!
所以按你 2楼的解释作图。
如果要其它的功能,你只要详细说明就行,不必附代码。

我建议你直接在 vfp 中,调用该作图对象的控件。
该控件带有打印的功能。

8 楼

十分感谢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 楼

***以下是作图部分:
.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 楼

还是cbl518答得精彩!还那句话---实在是高!

我来回复

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