PDA

View Full Version : Excel Automation



dariush2003jp
جمعه 16 آبان 1382, 04:25 صبح
sallam
man mikham az da application khodam beram dakhel excel va ye file khas (ya agar user khast file morede nazare oono) baz konam va baad az chand amaliat bargardam be delphi.
ba gozashtan ye Texceappliaction toonestam be Excel connect besham va oono baz konam, vali moteasefane fagat Frame Excel baz mishe, va hata say kardam ye Opendialog bezaram vali Opendialox Box ham poshte Excel geyere faal mimoone, kasi mitoone komak kone.
Please consider me a newbie in Delphi.
Mannon
Dariush :?:

SReza1
جمعه 16 آبان 1382, 05:01 صبح
با oleobject کار کردی؟

این کد رو اجرا کن


Var S : variant;
S := CreateOleObject('Excel.Application');
S.Visible := True;
S.Workbooks.Add;

با این object خیلی کارا میتونی بکنی!! تو msdn اینو هم میتونی جستجو کنی!! پارامتراش معلومه

dariush2003jp
جمعه 16 آبان 1382, 11:22 صبح
Aga mamnoon, vali che objecti bayad az kodoom component rou form gozasht ta in dastooro befahme. man Olecontainer ro emtehan karadm vali be dastoore "clientOleObject khata mide? yani aslan nemishnasatesh? any more hlep?
mamnoon

SReza1
جمعه 16 آبان 1382, 18:35 عصر
این چیزی که من گفتم کامپوننتی نیست که روی فرم قرار بدی فقط میتونی اون کارایی که داره رو باهاش انجام بدی
در بالای unit بیا ComObj رو use کن!!! اگه نکنی توابع مربوط به اونو نمیآره! میتونی یه دکمه بذاری و در داخل اون برنامه بالا رو run کنی

omidsm
یک شنبه 18 آبان 1382, 01:27 صبح
این کد را داخل فایلی با نام قرار بده و آن را نصب کن


unit ExcellPrint;

interface

uses
Windows, SysUtils, Variants, Classes,Forms
,OleServer, Excel2000;

type
TExcellPrint = class(tcomponent)
private
assign:boolean default false;
fXLApp: TExcelApplication;
fWorksheet: TExcelWorksheet;
fWorkBook: TExcelWorkbook;
fconnected:boolean;
ffilename:string;
ftmpfilename:string;

{ Private declarations }
protected
{ Protected declarations }
public
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
function show(showexcel:boolean;sheetindex:integer):boolean ;
function connect(showexcel:boolean;sheetindex:integer):bool ean;
function DisConnect:boolean;
{ Public declarations }
published
property filename: String read ffilename write ffilename;
property Tempfilename: String read ftmpfilename write ftmpfilename;
property connected: boolean read fconnected default false;
property XLApp:TExcelApplication read fXLApp write fXLApp;
property Worksheet:TExcelWorksheet read fWorksheet write fWorksheet;
property WorkBook:TExcelWorkbook read fWorkBook write fWorkBook;
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('new samples 1', [TExcellPrint]);
end;
function TExcellPrint.DisConnect:boolean;
begin
Result:=False;
if fconnected then
begin
try
fconnected:=false;
fWorkBook.Close(false);
fWorksheet.Disconnect;
fWorkBook.Disconnect;
fXLApp.Disconnect;
except
end;
end;
//
end;
function TExcellPrint.connect(showexcel:boolean;sheetindex: integer):boolean;
begin
if fconnected then exit;
if not assign then
begin
assign:=true;
fXLApp:=TExcelApplication.Create(Application);
fWorkBook:=TExcelWorkbook.Create(Application);
fWorksheet:=TExcelWorksheet.Create(Application);
end;
fconnected:=true;
try
fXLApp.AutoConnect := False;
fXLApp.ConnectKind := ckNewInstance;
fXLApp.AutoQuit := True;
fWorksheet.AutoConnect := False;
fWorksheet.ConnectKind := ckRunningOrNew;
fWorkBook.AutoConnect := False;
fWorkBook.ConnectKind := ckRunningOrNew;
fXLApp.Connect;
CopyFile(pchar(Ffilename),pchar(Ftmpfilename),fals e);
fXLApp.WorkBooks.Open(ftmpfilename,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyP aram,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyP aram,
EmptyParam,EmptyParam,0);
fWorkBook.ConnectTo(fXLApp.ActiveWorkbook);
fWorksheet.ConnectTo(fWorkbook.Sheets.Item[sheetin dex] as ExcelWorkSheet);
fWorksheet.Activate;
except
fconnected:=false;
Application.HandleException(Self);
end;
end;
destructor TExcellPrint.Destroy;
begin
DeleteFile(pchar(ftmpfilename));
inherited Destroy;
end;


constructor TExcellPrint.Create;
begin
ffilename:='\Gozaresh.xls';
ftmpfilename :='\TempBook.xls';
fconnected:=false;
inherited Create(AOwner);
end;
function TExcellPrint.show(showexcel:boolean;sheetindex:int eger):boolean;
begin
Result:=false;
if not fconnected then connect(false,1);

Result:=true;
try
if showexcel then
fXLApp.Visible[0] := True;
fWorksheet.ConnectTo(fWorkbook.Sheets.Item[sheetin dex] as ExcelWorkSheet);
fWorksheet.Activate;
except
Result:=false;
end;
end;
end.

ویراش شده توسط Mashatan