知道OLE吧?
在DELPHI5.0以上版本的VCL组件中有OFFICE系列的,你可以选一个ExcelApplication组件到
Form上,另外还必须拖放一个OLEContainer组件(System页上)到Form上,用来放置Excel
文件。下面范例是利用EXCEL表做一个统计图形,数据是从TABEL表上转入EXCEL表的,运行
后可得到同Excel表一样的操作界面-------相信看了这个程序或许对您有很大的启发:unit Unit7_16;
interface
uses Windows, Classes, Graphics, Forms, Controls, DB, DBGrids,
DBTables, Grids, StdCtrls, ExtCtrls, ComCtrls, Dialogs, OleCtrls,
OleCtnrs, OleServer, Excel2000;
type
TOLE_Form1 = class(TForm)
Panel1: TPanel;
InsertBtn: TButton;
Table1: TTable;
Table1NAME: TStringField;
Table1SIZE: TSmallintField;
Table1WEIGHT: TSmallintField;
Table1AREA: TStringField;
Table1BMP: TBlobField;
ExcelApplication1: TExcelApplication;
OleContainer1: TOleContainer;
procedure InsertBtnClick(Sender: TObject);
end;
var
OLE_Form1: TOLE_Form1;
implementation
uses ComObj;
{$R *.DFM}
procedure TOLE_Form1.InsertBtnClick(Sender: TObject);
var
aSheet, aChart, series: Variant;
i: integer;
begin
// 显示MS-Excel的运行过程
ExcelApplication1.Visible[0] := True;
// 创建一个 WorkBook
ExcelApplication1.WorkBooks.Add(xlWBATWorksheet,0);
// 获取 WorkBook 中的一页 WorkSheet
aSheet:=ExcelApplication1.Worksheets.Item[1];
// 将Animals.dbf的数据填入Sheet的Cells二维数组内
aSheet.Cells[1,1].Value:='大小';
aSheet.Cells[3,1].Value:='体重';
i := 2;
with Table1do
begin
Open;
First;
while not eofdo
begin
aSheet.Cells[1, i].Value:=FieldByName('Name').AsString;
aSheet.cells[2, i].Value:=FieldByName('Size').AsString;
aSheet.cells[3, i].Value:=FieldByName('Weight').AsString;
i:=i+1;
Next;
end;
end;
// 在Sheet上加入一块空的统计图形
aChart := aSheet.ChartObjects.Add(100, 50, 200, 150);
series := aChart.chart.SeriesCollection;
// 将Sheet上某段范围的数据画出对应的统计图表
series.Add('Sheet1!R1C1:R2C7', TRUE);
series.Add('Sheet1!R3C1:R3C7', TRUE);
// 将数据存成Excel格式的文件
aSheet.SaveAs('C:/a.xls');
// 把 Excel 文件 Insert 到 OleContainer
OleContainer1.CreateObjectFromFile('C:/a.xls',False);
// 结束MS-Excel的运行
aSheet.Application.Quit;
end;
end.