《Delphi 4 编程技术内幕》第16章的例子,就是重头到尾讲这个的(包括饼图),且带示例程序及源代码!
解决方案 »
- 两个编辑框对应数据库字段是日期类型如何实现当写入第一个编辑框日期后第二个编辑框自动赋值并且在第一个编辑框的日期上加一年
- 救命啊!关于fastreport的问题!!!???
- 报表问题
- 怎样在delphi下调用vc编写的dll中的资源,如:字符串和图片?急急!!!!
- FindFirst的用法 ??
- 用StrindGrid的进来帮下忙
- 关于TListView的GetNextItem(ListItem,Direction,States);问题
- 如何让程序自动启动?
- 高手帮忙!程序顺序执行,当执行到50行的时候,想用一语句判断一下前面的50行是否产生了异常,有这样的函数吗?
- XE4 怎么提高Canvas绘图效率
- 最最最easy的问题,容易得分哦!
- 如何实现在一个表单中,当我点击最大化时,我......大家帮我看看,立刻给分的.
主单元代码:From 《Delphi 4 编程技术内幕》,Charlie Calvert//////////////////////////////////////
// Purpose:
// Project: MapiAndDelphi1.dpr
// Copyright (c) 1998 by Charlie Calvert
//
unit Main;interfaceuses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms, Dialogs, Db,
DBTables, Grids, DBGrids,
StdCtrls, Excel2;type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ListBox1: TListBox;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
VarObject: Variant;
ExcellObject: Excel2.Application;
// V1: Variant;
procedure ShowTable(WorkSheet: Excel2.Worksheet);
procedure ShowVarTables(WorkSheet: Variant);
procedure ShowVarChart(Sheets: Variant);
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses
ComObj;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
WorkBook: Variant;
WorkSheets: Variant;
WorkSheet: Variant;
Count, i: Integer;
begin
VarObject := CreateOleObject('Excel.Application');
VarObject.Application.Workbooks.Add;
VarObject.Application.Visible := True;
WorkBook := VarObject.Application.Workbooks[1];
ListBox1.Items.Add(WorkBook.name);
WorkSheets := Workbook.WorkSheets; Count := WorkSheets.Count;
for i := 1 to Count do begin
WorkSheet := WorkSheets.Item[i];
WorkSheet.Name := 'Sammy' + IntToStr(i);
ListBox1.Items.Add(WorkSheet.Name);
end; WorkSheet := WorkSheets.Item[1];
ShowVarTables(WorkSheet);
ShowVarChart(VarObject.Application.Sheets);
end;procedure TForm1.ShowVarTables(WorkSheet: Variant);
var
i, j: Integer;
begin
i := 0;
while not Table1.Eof do begin
if Table1.FieldByName('Continent').AsString = 'South America' then begin
Inc(i);
for j := 0 to Table1.FieldCount - 1 do
WorkSheet.Cells[i, j + 1] := Table1.Fields[j].AsString;
end;
Table1.Next;
end;
end;procedure TForm1.ShowVarChart(Sheets: Variant);
var
Chart: Variant;
V: Variant;
begin
Sheets.Add(, Sheets.Item[2], 1, xlChart);
Chart := Sheets.Item['Chart1'];
Chart.ChartArea.Interior.Pattern := xlLightDown;
V := Sheets.Item['Sammy1'].Range['A1:E11'];
Chart.SeriesCollection.Add(V);
// Chart.SourceData := 'Sammy1!$A$1:$E$11';
end;procedure TForm1.ShowTable(WorkSheet: Excel2.Worksheet);
var
i, j: Integer;
begin
i := 0;
while not Table1.Eof do begin
inc(i);
for j := 0 to Table1.FieldCount - 1 do
if Table1.FieldByName('Continent').AsString = 'South America' then
WorkSheet.Cells[i, j + 1] := Table1.Fields[j].AsString;
Table1.Next;
end;
end;procedure TForm1.Button4Click(Sender: TObject);
var
WorkBook: Excel2.WorkBook;
WorkSheets: Excel2.Sheets;
WorkSheet: Excel2.WorkSheet;
Count, i: Integer;
begin
ExcellObject := CreateOleObject('Excel.Application') as Excel2.Application;
ExcellObject.Application.Workbooks.Add(NULL, 0);
ExcellObject.Application.Visible[0] := True;
WorkBook := ExcellObject.Application.Workbooks[1];
ListBox1.Items.Add(WorkBook.name);
WorkSheets := IDispatch(Workbook.WorkSheets) as Excel2.Sheets; Count := WorkSheets.Count;
for i := 1 to Count do begin
WorkSheet := IDispatch(WorkSheets.Item[i]) as Excel2.WorkSheet;
WorkSheet.Name := 'Sammy' + IntToStr(i);
ListBox1.Items.Add(WorkSheet.Name);
end; ShowTable(WorkSheets.Item[1] as Excel2.WorkSheet);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
// if not VarIsEmpty(VarObject) then
// VarObject.WorkBooks[1].Close(True, 'c:\sam.xls', 0);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if not VarIsEmpty(VarObject) then
VarObject.WorkBooks[1].Close(True, 'c:\sam.xls');
// SendMail;
end;{procedure TForm1.SendMail;
var
FMapi: TMapi;
begin
if ShowModal = mrOk then begin
FMapi.SendTo := SendToEdit.Text;
FMapi.Subject := SubjectEdit.Text;
FMapi.Text := Memo1.Text;
FMapi.AccountName := FMapi.AccountName;
FMapi.Attachment := 'c:\sam.xls';
// Mapi.PassWord := 'flapper';
FMapi.SendMail;
end;
end; }
end.
http://delphixp.myrice.com/delphi/d4_1.zip
http://delphixp.myrice.com/delphi/d4_2.zip作者主页在更新,可能下载会不怎么稳定