寻Delphi5控件(能直接将Tquery或TTable中的数据集输出成Word及Excel格式) Delphi5\Demos\Activex\Oleauto\SrvComp\Word有一个例子,自己写也不麻烦呀,找控件干吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用delphi 5菜单中的project/import type library将word和excel的类型库引入,通过ole技术自己编写吧 参考书:《delphi 4 编程技术内幕》 下面给你一个较简单的源代码,用TQuery和TTable也就很简单了unit Unit1;interfaceuses 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;implementationuses 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. 给[email protected]写信,他有一个,会给你的 下面提供的代码分别针对Word及Excel,你可以直接使用,也可以写一个类。*****更多函数请参考MSDN中的OLE部分!//**********具体代码**********//unit Fasly;interfaceuses 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;implementationuses ComObj;{$R *.DFM}procedure TForm3.Button1Click(Sender: TObject);var MSWord:Variant;i,j:Integer;beginSaveDialog1.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;beginSaveDialog1.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. [求助]FastReport问题,直接打印报错 DELPHI网络监控问题。 如何 在delphi ShellListView控件中弹出系统右键菜单? 请大家帮忙看看这段"抽奖"代码的思路和含义 用dbexpress组件连接数据库,怎样用代码设置SQLConnection?高手指点! MySQL数据库临时表的问题 这句话怎么不对了 帮我看看 高手们 Oracle8 的blob字段,BDE读取报“Invalid Field Type”的错误 关于触发器的问题 怎样获得文件的最新修改日期? Delphi中用TWebBrowser控件问题??? 比较菜,但让我束手无策的问题。
通过ole技术自己编写吧
参考书:《delphi 4 编程技术内幕》
unit Unit1;interfaceuses
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;implementationuses
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.
*****更多函数请参考MSDN中的OLE部分!//**********具体代码**********//
unit Fasly;interfaceuses
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;implementationuses 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.