如題

就像這樣的柱狀圖
uj5u.com熱心網友回復:
如果不保存圖片,那就不是轉移柱狀圖的問題,而是怎么把這個柱狀圖的資料提取出來或者直接利用它的來源資料,呼叫Excel的介面創建Excel自己的柱狀圖的問題。一個是資料來源,另一個就是呼叫Excel介面,可以CreateOleObject('Excel.Application'),看看能不能呼叫Excel的柱狀圖功能。查Excel介面幫助。uj5u.com熱心網友回復:
有木有類似的檔案的demo啊?
發個參考下嘛
uj5u.com熱心網友回復:
沒有必要如此復雜,直接在生成EXCEL時,在EXCEL中創建Chart圖了。uj5u.com熱心網友回復:
網上可以搜到。例如:http://blog.csdn.net/zang141588761/article/details/51700694
uj5u.com熱心網友回復:
來段代碼,看看你直接生成Excel和Chart,和我說的有區別的地方。
uj5u.com熱心網友回復:
ChartObject就是Excel的嵌入式圖表物件。
uj5u.com熱心網友回復:
有沒有代碼參考下嘛
uj5u.com熱心網友回復:
網上可以搜到。
例如:http://blog.csdn.net/zang141588761/article/details/51700694
ChartObject就是Excel的嵌入式圖表物件。
有沒有代碼參考下嘛
一會兒發出來,稍等。
uj5u.com熱心網友回復:
Excel生成圖表。也可以使用Servers頁封裝好的組件,比較方便,原理是一樣的。
uses ComObj;
var
exlApp,WorkBook1,Sheet1, Chart1, Range1, Series1:Variant;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
try
exlApp:=CreateOleObject('Excel.Application');
WorkBook1:=CreateOleObject('Excel.Sheet');
Chart1:=CreateOleObject('Excel.Chart');
except
MessageBox(Handle,'呼叫Excel失敗。','警告',MB_OK+MB_ICONWarning);
Exit;
end;
exlApp.Visible:=False;
WorkBook1:=exlApp.WorkBooks.Add;
exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
//--------------------------------------------
Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
for i:= 1 to 10 do
Sheet1.Cells[i, 1]:=i;
//--------------------------------------------
Chart1:=exlApp.Charts.Add;
Chart1.ChartType:=$FFFFEFFC; //圖表型別xl3DColumn
Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
Series1:=Chart1.SeriesCollection;
Series1.Add(Range1, True);
exlApp.Visible:=True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if not VarIsEmpty(exlApp) then
begin
exlApp.DisplayAlerts:=False; //不保存退出
exlApp.Quit;
end;
end;
uj5u.com熱心網友回復:
Excel生成圖表。也可以使用Servers頁封裝好的組件,比較方便,原理是一樣的。
uses ComObj;
var
exlApp,WorkBook1,Sheet1, Chart1, Range1, Series1:Variant;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
try
exlApp:=CreateOleObject('Excel.Application');
WorkBook1:=CreateOleObject('Excel.Sheet');
Chart1:=CreateOleObject('Excel.Chart');
except
MessageBox(Handle,'呼叫Excel失敗。','警告',MB_OK+MB_ICONWarning);
Exit;
end;
exlApp.Visible:=False;
WorkBook1:=exlApp.WorkBooks.Add;
exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
//--------------------------------------------
Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
for i:= 1 to 10 do
Sheet1.Cells[i, 1]:=i;
//--------------------------------------------
Chart1:=exlApp.Charts.Add;
Chart1.ChartType:=$FFFFEFFC; //圖表型別xl3DColumn
Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
Series1:=Chart1.SeriesCollection;
Series1.Add(Range1, True);
exlApp.Visible:=True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if not VarIsEmpty(exlApp) then
begin
exlApp.DisplayAlerts:=False; //不保存退出
exlApp.Quit;
end;
end;
不能直接用吧
要報錯啊
uj5u.com熱心網友回復:
參考ComObj了?代碼確定正常執行。uj5u.com熱心網友回復:
其他部分不變,改動一下,這個應該可以解決你的報錯。
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
try
exlApp:=CreateOleObject('Excel.Application');
WorkBook1:=CreateOleObject('Excel.Sheet');
except
MessageBox(Handle,'呼叫Excel失敗。','警告',MB_OK+MB_ICONWarning);
Exit;
end;
WorkBook1:=exlApp.WorkBooks.Add;
exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
//--------------------------------------------
Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
for i:= 1 to 10 do
Sheet1.Cells[i, 1]:=i;
//--------------------------------------------
Chart1:=Sheet1.ChartObjects.Add(200,0,480,360);
Chart1.Chart.ChartType:=$FFFFEFFC; //圖表型別xl3DColumn
//--------------------------------------------
Series1:=Chart1.Chart.SeriesCollection;
Range1:=exlApp.Sheets.Item['Data1'].Range['A1:A10'];
Series1.Add(Range1, True);
Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
Series1.Add(Range1, True);
exlApp.Visible:=True;
end;
uj5u.com熱心網友回復:
其他部分不變,改動一下,這個應該可以解決你的報錯。
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
try
exlApp:=CreateOleObject('Excel.Application');
WorkBook1:=CreateOleObject('Excel.Sheet');
except
MessageBox(Handle,'呼叫Excel失敗。','警告',MB_OK+MB_ICONWarning);
Exit;
end;
WorkBook1:=exlApp.WorkBooks.Add;
exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
//--------------------------------------------
Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
for i:= 1 to 10 do
Sheet1.Cells[i, 1]:=i;
//--------------------------------------------
Chart1:=Sheet1.ChartObjects.Add(200,0,480,360);
Chart1.Chart.ChartType:=$FFFFEFFC; //圖表型別xl3DColumn
//--------------------------------------------
Series1:=Chart1.Chart.SeriesCollection;
Range1:=exlApp.Sheets.Item['Data1'].Range['A1:A10'];
Series1.Add(Range1, True);
Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
Series1.Add(Range1, True);
exlApp.Visible:=True;
end;
我發現問題了,是我的原因不是你代碼的問題,
因為我的表單里面有了chart1和series1但不是Variant型別的,所有出錯了。。。。
謝謝哈!稍后還有其他不懂的還要請教下你哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59140.html
標籤:VCL組件開發及應用
