大家帮我看看这个excel的问题(有源码)(30分)

  • 主题发起人 主题发起人 AthlonXP
  • 开始时间 开始时间
A

AthlonXP

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的:
我想在excel中生成一个XY散点图然后把这个散点图拷贝成一个BMP格式的图。利用DFW上大家的讨论,我已经能够生成相应的散点图了,但在把散点图拷贝成BMP时出了问题,BMP中只有XY轴没有数据点。该怎么办呢?有兴趣的不妨把我的代码自己运行一下,看问题出在哪。
Var
V,TempC,:Variant;
Sheet: Variant;
begin
I:integer;
begin
try
v:= CreateOleObject('Excel.Application');
v.Workbooks.Add;

Tempc:=v.Sheets[1].chartobjects.add(10, 40, 300, 180);
v.Sheets[1].chartobjects[1].chart.charttype:= 63;
Tempc.chart.SeriesCollection.NewSeries;
Tempc.chart.SeriesCollection(1).XValues := '=Sheet1!R1C1:R12C1';
Tempc.chart.SeriesCollection(1).Values := '=Sheet1!R1C2:R12C2';
v.Sheets[1].chartobjects[1].chart.charttype:= 73;

tempc.chart.HasLegend := False;
tempc.chart.HasTitle := True;
tempc.chart.ChartTitle.Characters.Text:=('Cgg-Vgs');
tempc.chart.ChartTitle.Characters.Font.size:=12;

tempc.Chart.Axes(xlValue, xlPrimary).HasTitle := True;
tempc.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := 'Cgg';
tempc.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.font.size := 10;

tempc.Chart.Axes(xlCategory, xlPrimary).HasTitle := True;
tempc.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := 'Vgs';
tempc.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.font.size := 10;
tempc.Chart.PlotArea.Left := 20;
tempc.Chart.PlotArea.Top := 15;
tempc.Chart.PlotArea.Width := 250;
tempc.Chart.PlotArea.Height := 120;
tempc.chart.PlotArea.ClearFormats;
tempc.chart.Axes(xlCategory).TickLabels.font.size:=9;
tempc.chart.Axes(xlValue).TickLabels.font.size:=9;
tempc.chart.SeriesCollection(1).Border.Color := RGB(255, 0, 0);
//
tempc.Copypicture(xlscreen,xlbitmap);
v.Sheets[1].paste;
//上面这两句不知道能不能改,但我在VBA下是可以用的啊。

v.Workbooks[1].WorkSheets['Sheet1'].Name := 'DELPHI';
Sheet:= v.Workbooks[1].WorkSheets['DELPHI'];
for I:=1 to 20 do
begin
Sheet.Cells[I,1] :=IntToStr(I);
Sheet.Cells[I,2] :=FloatToStr(0.34*I*I+0.25*I+4.33);
end;
v.sheets['DELPHI'].Activate;
v.Visible := CheckBox1.Checked;
except
Showmessage('Excel wrong');
v.DisplayAlerts := false;
v.Quit;
close;
end;
 
上贴子时多了个begin不好意思,整个程序编译通过,能运行,但结果不是想要的。
 
大家可能不是很明白我的意思,我换个问法:
  在Excel的VBA中有这样一种用法:ChartObjects.Copypicture(xlscreen,xlbitmap);
它是用来将一个excel中的图表考贝成一个BMP文件(详细的可见VBA的帮助文件),我在VBA中试验成功了但转到delphi中有bug,主要是当我用PASTE粘贴所得的图片时图中的数据点丢了,我想应该是Copypicture时出了问题,有人能帮我看吗?
太感谢了![red][/red]
 
看来没人有兴趣,不过问题解决了,主要我是在给单元格赋值前copypicture的如果这个命令放在赋值后就没有这个问题了。
 
哈哈,才看到,这个我关心
 
占个位子!先
 
搂主:
我想用delphi取出一个excel中取出数据,(该excel中连接着外部的股票软件,数据实时变更中)。我试着用ado连了,但是数据不能同步刷新;
不知道excel中的宏定义有没有在数据发生改变时向外部的com对象发数据的?
希望能听听你的意见。
先谢了。
 
后退
顶部