簡易的用Delphi畫圖表範例
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
ExcelApp: Variant;
cellrange:String;
const
xlValue = 2;
xlSecondary = 2;
xlTickLabelPositionNone = -4142;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := false;
ExcelApp.Caption := 'Application use Microsoft Excel';
ExcelApp.WorkBooks.Add;
for i := 1 to 9 do
for j := 1 to 9 do
ExcelApp.Cells[i,j+1] := IntToStr(i*j);
for i := 1 to 9 do
ExcelApp.Cells[i,1] := 'A' + IntToStr(i);
cellrange:='=工作表1!$A$1:$B$9';
ExcelApp.ActiveSheet.ChartObjects.add(300, 30, 600, 280);
ExcelApp.ActiveSheet.ChartObjects(1).Activate; //激活圖表
ExcelApp.ActiveSheet.ChartObjects(1).Chart.seriescollection.ADD(cellrange); //建立新數例
ExcelApp.ActiveSheet.chartobjects(1).chart.hastitle := true;
ExcelApp.ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Name := '';
ExcelApp.ActiveWorkBook.SaveAs('C:\Users\User\Desktop\' + FormatDateTime('HHNNSS', Now) + '.xlsx'); //存檔
ExcelApp.ActiveWorkBook.Saved := True; //要save 不然會跳視窗
finally
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
VarClear(ExcelApp);
ExcelApp:=unassigned;
end;
ShowMessage('Finish');
end;
這裡要注意的幾點
ExcelApp.ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Name := '';
網路上找到的文章 都是 [ ]
用[ ] 會跳 找不到物件 所以請使用( )
不知道是不是Excel版本的關係(我的版本是2013)
另外 實測發現
先跑資料 最後在加圖表 效率較高
若先加圖表 在跑資料 畫面上會有一個Excel圖表右上角的 + 一直閃
然後迴圈就跑超慢..
留言列表