寻Delphi5控件(能直接将Tquery或TTable中的数据集输出成Word及Excel格式)

lifeng 2000-06-04 03:27:00
...全文
284 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
alin 2000-07-04
  • 打赏
  • 举报
回复
给caijiong@netease.com写信,他有一个,会给你的
Hank 2000-07-04
  • 打赏
  • 举报
回复
下面提供的代码分别针对Word及Excel,你可以直接使用,也可以写一个类。
*****更多函数请参考MSDN中的OLE部分!

//**********具体代码**********//
unit Fasly;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, Db, Mask, DBCtrls, Grids, DBTables;

type
TForm3 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
SaveDialog1: TSaveDialog;
Table1: TTable;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

uses ComObj;

{$R *.DFM}

procedure TForm3.Button1Click(Sender: TObject);
var MSWord:Variant;
i,j:Integer;
begin
SaveDialog1.Filter:='*.DOC|*.DOC';
SaveDialog1.DefaultExt:='DOC';
if SaveDialog1.Execute then
begin
MSWord:=CreateOLEObject('Word.Application');
MSWord.Documents.Open(FileName:=SaveDialog1.FileName,ReadOnly:=False);
MSWord.Visible:=False;
MSWord.ActiveDocument.Range(Start:=0,End:=0);
Table1.Open;
j:=Table1.RecordCount;
Table1.First;
for i:=1 to j do
begin
MSWord.ActiveDocument.Range.InsertAfter(Text:=Table1.FieldByName('CODE').AsString+Table1.FieldByName('COLOR').AsString+Chr(13));
Table1.Next;
end;
MSWord.Documents.Close;
end;
end;

procedure TForm3.Button2Click(Sender: TObject);
var MSExcel:Variant;
i,j:Integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MSExcel:=CreateOLEObject('Excel.Application');
MSExcel.WorkBooks.Add;
MSExcel.Visible:=False;
Table1.Open;
j:=Table1.RecordCount;
Table1.First;
for i:=1 to j do
begin
MSExcel.Cells[i,1].Value:=Table1.FieldByName('CODE').AsString;
MSExcel.Cells[i,2].Value:=Table1.FieldByName('COLOR').AsString;
Table1.Next;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;

end.
chenjian 2000-07-03
  • 打赏
  • 举报
回复
下面给你一个较简单的源代码,用TQuery和TTable也就很简单了
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, Excel97, ExtCtrls, QuickRpt, Db, DBTables;

type
TForm1 = class(TForm);
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
xlApp: Variant;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
ComObj;

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);
begin
//
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
begin
xlApp := CreateOleObject('Excel.Application');
xlApp.Visible := True;
xlApp.Workbooks.Add(EmptyParam); // xlWBatWorkSheet
xlApp.Workbooks[1].WorkSheets[1].Name := '乘法表';
// xlApp.Workbooks[1].Title := 'XXXX';
for i:=1 to 200 do
if i mod 2 = 0 then
begin
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Size := 10;
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Color := clBlue;
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Name := '宋体';
end
else if i mod 2 = 1 then
begin
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Size := 10;
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Color := clRed;
xlApp.Workbooks[1].WorkSheets['乘法表'].Columns[i].Font.Name := '宋体';
end;
for i:=1 to 200 do
for j:=1 to 200 do
// xlApp.Workbooks[1].WorkSheets['mmmm'].Cells[i,j] := 20;
if (j<=i) then
xlApp.Workbooks[1].WorkSheets['乘法表'].Cells[i,j] := IntToStr(j)+'*'+IntToStr(i)+'='+IntToStr(i*j);
// for i:=1 to 20 do
// xlApp.Workbooks[1].WorkSheets['mmmm'].Cells[21,i] := '=sum(A1:A20)';

xlApp.Workbooks[1].WorkSheets[2].Activate;
// xlApp.Workbooks[1].WorkSheets[2].Columns[1].Name := 'XXX';
xlApp.Workbooks[1].WorkSheets[2].Range['A1:F10'].Borders.LineStyle := xlContinuous;
xlApp.Workbooks[1].WorkSheets[2].Range['A1:F10'].Font.Size := 11;
xlApp.Workbooks[1].WorkSheets[2].Range['A1:F10'].Font.Color := clBlue;
xlApp.Workbooks[1].WorkSheets[2].Range['A1:C10'].Font.Bold := True;
end;

end.
lixq 2000-06-08
  • 打赏
  • 举报
回复
我也想要。
z_rainman 2000-06-08
  • 打赏
  • 举报
回复
利用delphi 5菜单中的project/import type library将word和excel的类型库引入,
通过ole技术自己编写吧
参考书:《delphi 4 编程技术内幕》
kxy 2000-06-04
  • 打赏
  • 举报
回复
Delphi5\Demos\Activex\Oleauto\SrvComp\Word
有一个例子,自己写也不麻烦呀,找控件干吗?

5,387

社区成员

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

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