急!Delphi 如何把DBChart中的图表导出到Excel

zhangyunkk 2009-05-19 09:48:57
如题!
...全文
361 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyunkk 2009-05-20
  • 打赏
  • 举报
回复
怎么让右标放到最底部?
zhangyunkk 2009-05-19
  • 打赏
  • 举报
回复
先借鉴下,看看
dinoalex 2009-05-19
  • 打赏
  • 举报
回复
[Code=Delphi(Pascal)]

前人的资料

unit u_testchart;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Excel2000,ComObj, StdCtrls;

type
TF_TestChart = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FExcelApplication,Sheet1:Variant;
public
{ Public declarations }
end;
resourcestring
rsNoSetup = 'Sorry!±z¥i¯à¨S¦³¦w¸ËExcel2000';

var
F_TestChart: TF_TestChart;

implementation

{$R *.dfm}

procedure TF_TestChart.Button1Click(Sender: TObject);
var
startx,i,x:integer;
Cell1,Cell2,Range:Variant;
begin
try
FExcelApplication:=CreateOleObject('Excel.Application');
except
MessageDlg(rsNoSetup,mtInformation,[mbOK],0);
Exit;
end;
FExcelApplication.Workbooks.Add(xlWBatWorkSheet);
Sheet1:=FExcelApplication.Workbooks[1].Worksheets['sheet1'];
FExcelApplication.Visible:=true;
Sheet1.cells.item[1,1]:='Monthly';
Sheet1.cells.item[1,2]:='Jan';
Sheet1.cells.item[1,3]:='Feb';
Sheet1.cells.item[1,4]:='Mar';
Sheet1.cells.item[1,5]:='Apr';
Sheet1.cells.item[1,6]:='May';
Sheet1.cells.item[1,7]:='Jun';
Sheet1.cells.item[1,8]:='Jul';
Sheet1.cells.item[1,9]:='Aug';
Sheet1.cells.item[1,10]:='Sep';
Sheet1.cells.item[1,11]:='Oct';
Sheet1.cells.item[1,12]:='Nov';
Sheet1.cells.item[1,13]:='Dec';
Sheet1.cells.item[1,13]:='Dec';

Sheet1.Range['A20','C20'].Columns.HorizontalAlignment:=xlGeneral;
Sheet1.Range['A20','C20'].Columns.VerticalAlignment:=xlcenter;
Sheet1.Range['A20','C20'].Columns.WrapText := False;
Sheet1.Range['A20','C20'].Columns.Orientation:= 0 ;
Sheet1.Range['A20','C20'].Columns.AddIndent := False ;
Sheet1.Range['A20','C20'].Columns.IndentLevel := 0 ;
Sheet1.Range['A20','C20'].Columns.MergeCells := True ;
sheet1.Range['A20','A20'].value:='TEST';

startx:=2;

for x:=1 to 3 DO
begin
for i:=1 to 12 DO
begin
Sheet1.cells.item[x+1,1]:=x;
Sheet1.cells.item[startx,1+i]:=(i+x)*20;
end;
startx:=startx+1;
end;

Cell1:=sheet1.cells.item[1,1];
Cell2:=sheet1.cells.item[startx-1,13];
Range:=sheet1.Range[Cell1,Cell2];
sheet1.Range[Cell1,Cell2].Columns.Borders.colorIndex:=0;
sheet1.ChartObjects.add(0,100,700, 200) ;
sheet1.ChartObjects[1].Activate;
sheet1.ChartObjects[1].Chart.charttype:=xlLineMarkers;
sheet1.ChartObjects[1].Chart.seriescollection.ADD[Range];
sheet1.ChartObjects[1].Chart.PlotBy:=xlRows;

sheet1.ChartObjects[1].Chart.Axes(xlValue, xlPrimary).HasTitle := True;
sheet1.ChartObjects[1].Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := 'Y';
sheet1.ChartObjects[1].Chart.Axes(xlCategory, xlPrimary).HasTitle := True;
sheet1.ChartObjects[1].Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := 'X';

sheet1.ChartObjects[1].Chart.ChartArea.Font.Size:= 10;
sheet1.ChartObjects[1].Chart.HasTitle := false ;

Sheet1.Range['A20','C20'].Columns.HorizontalAlignment:=xlCenter;
Sheet1.Range['A20','C20'].Columns.VerticalAlignment:=xlcenter;
Sheet1.Range['A20','C20'].Columns.WrapText := False;
Sheet1.Range['A20','C20'].Columns.Orientation:= 0 ;
Sheet1.Range['A20','C20'].Columns.AddIndent := False ;
Sheet1.Range['A20','C20'].Columns.IndentLevel := 0 ;
Sheet1.Range['A20','C20'].Columns.MergeCells := True ;
sheet1.Range['A20','C20'].value:='TEST';
Sheet1.Range['A20','C20'].Columns.Borders.colorIndex:=0;

end;

procedure TF_TestChart.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
if not VarIsEmpty(FExcelApplication) then
begin
FExcelApplication.DisplayAlerts:=false;
FExcelApplication.Quit;
end;
end;

procedure TF_TestChart.FormDestroy(Sender: TObject);
begin
F_TestChart:=nil;
end;

end.

[/Code]
zhangyunkk 2009-05-19
  • 打赏
  • 举报
回复
我是在前台做了个统计分析.想把分析的结果导入到Excel方式显示.
[Quote=引用 2 楼 kampan 的回复:]
不太清楚,不过你可以先将其村为图片,然后导入试试。有个SaveToBitmapFile方法好像。试试看。
[/Quote]
dinoalex 2009-05-19
  • 打赏
  • 举报
回复
实在不明白的话~~

就到MSDN里查吧

http://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.xlcharttype.aspx
kampan 2009-05-19
  • 打赏
  • 举报
回复
不太清楚,不过你可以先将其村为图片,然后导入试试。有个SaveToBitmapFile方法好像。试试看。
zhangyunkk 2009-05-19
  • 打赏
  • 举报
回复
怎么没人会吗?高手那去了!
dinoalex 2009-05-19
  • 打赏
  • 举报
回复
[Code=Delphi(Pascal)]
简化了一点

procedure TF_TestChart.Button1Click(Sender: TObject);
var
startx,i,x:integer;
Cell1,Cell2,Range:Variant;
begin
try
FExcelApplication:=CreateOleObject('Excel.Application');
except
MessageDlg(rsNoSetup,mtInformation,[mbOK],0);
Exit;
end;
FExcelApplication.Workbooks.Add(xlWBatWorkSheet);
Sheet1:=FExcelApplication.Workbooks[1].Worksheets['sheet1'];
FExcelApplication.Visible:=true;
Sheet1.cells.item[1,1]:='Monthly';
Sheet1.cells.item[1,2]:='Jan';
Sheet1.cells.item[1,3]:='Feb';
Sheet1.cells.item[1,4]:='Mar';
Sheet1.cells.item[1,5]:='Apr';
Sheet1.cells.item[1,6]:='May';
Sheet1.cells.item[1,7]:='Jun';
Sheet1.cells.item[1,8]:='Jul';
Sheet1.cells.item[1,9]:='Aug';
Sheet1.cells.item[1,10]:='Sep';
Sheet1.cells.item[1,11]:='Oct';
Sheet1.cells.item[1,12]:='Nov';
Sheet1.cells.item[1,13]:='Dec';
Sheet1.cells.item[1,13]:='Dec'; //这些是你的客户名

startx:=2;

for x:=1 to 3 DO
begin
for i:=1 to 12 DO
begin
Sheet1.cells.item[x+1,1]:=x;
Sheet1.cells.item[startx,1+i]:=(i+x)*20;
end;
startx:=startx+1;
end;

Cell1:=sheet1.cells.item[1,1]; // 数据左上角
Cell2:=sheet1.cells.item[2,13]; // 数据右下角
Range:=sheet1.Range[Cell1,Cell2]; //
sheet1.Range[Cell1,Cell2].Columns.Borders.colorIndex:=0;
sheet1.ChartObjects.add(0,100,700, 300); // x,y,width,higth 区域大小
sheet1.ChartObjects[1].Activate;
sheet1.ChartObjects[1].Chart.charttype:= 51 ; // 51为你要的柱形
sheet1.ChartObjects[1].Chart.seriescollection.ADD[Range];
sheet1.ChartObjects[1].Chart.PlotBy:= xlRows; //xlColumns;

sheet1.ChartObjects[1].Chart.ChartArea.Font.Size:= 10;
sheet1.ChartObjects[1].Chart.HasTitle := false ;

end;

[/Code]
zhangyunkk 2009-05-19
  • 打赏
  • 举报
回复

zhangyunkk 2009-05-19
  • 打赏
  • 举报
回复
xlWBatWorkSheet,xlGeneral,xlcenter 是什么类型?
DELPHI 报未定义类型
[Quote=引用 4 楼 dinoalex 的回复:]
Delphi(Pascal) code

前人的资料

unit u_testchart;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Excel2000,ComObj, StdCtrls;

type
TF_TestChart = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(S…
[/Quote]

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧