[Delphi] OLE, Excel

Programovacie jazyky, rady, poradňa...
ⓢⓐⓟⓛⓔⓡ
Star
Star
Používateľov profilový obrázok
Príspevky: 621
Registrovaný: 06 jún 2008, 15:07
Bydlisko: nedaleko od hojko.com

[Delphi] OLE, Excel

Príspevok od používateľa ⓢⓐⓟⓛⓔⓡ »

Zdravím,

potrebujem precitat data z nejakeho .xls, pristupovat k suboru som chcel pomocou OLE ale vzdy mi vypise "Ucastnik sa nenasiel" excel mam samozrejme nainstalovany 2007, skusal som aj na 2003 no tak isto som pochodil.
Chcel by som sa Vas spytat kde robim chybu ?

Postupoval som podla tohto.

Kód: Vybrať všetko

uses
  OleAuto; // Delphi 3
  ComObj;  // Delphi 5

var
  vExcel: variant;

procedure TForm1.Button1Click(Sender: TObject);
begin
  vExcel := CreateOleObject('Excel.Application');
  vExcel.Workbooks.Add;
  vExcel.ActiveWorkbook.Worksheets(1).Range('A1').Value := 'Hello World';
  vExcel.Visible := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if not VarIsEmpty(vExcel) then vExcel.Quit;
end;
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: [Delphi] OLE, Excel

Príspevok od používateľa audiotrack »

skús dať vExcel ako OLEVariant
ⓢⓐⓟⓛⓔⓡ
Star
Star
Používateľov profilový obrázok
Príspevky: 621
Registrovaný: 06 jún 2008, 15:07
Bydlisko: nedaleko od hojko.com

Re: [Delphi] OLE, Excel

Príspevok od používateľa ⓢⓐⓟⓛⓔⓡ »

ak si to myslel takto :

Kód: Vybrať všetko

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  vExcel: variant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  vExcel := CreateOleObject('vExcel.Application');
  vExcel.Workbooks.Add;
  vExcel.ActiveWorkbook.Worksheets(1).Range('A1').Value := 'Hello World';
  vExcel.Visible := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if not VarIsEmpty(vExcel) then vExcel.Quit;
end;

end.
tak to nejde. "Chybný retazec triedy"
:(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: [Delphi] OLE, Excel

Príspevok od používateľa audiotrack »

nie. Inak tam máš kopec chýb, takže som ti to radšej celé napísal

Kód: Vybrať všetko

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  vExcel,workbook: olevariant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  vExcel := CreateOleObject('Excel.Application');
  workbook := vExcel.Workbooks.Add;
  workbook.Worksheets[1].Range['A1','A1'].Value := 'Hello World';
  vExcel.Visible := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if not VarIsEmpty(vExcel) then vExcel.Quit;
end;

end.
ⓢⓐⓟⓛⓔⓡ
Star
Star
Používateľov profilový obrázok
Príspevky: 621
Registrovaný: 06 jún 2008, 15:07
Bydlisko: nedaleko od hojko.com

Re: [Delphi] OLE, Excel

Príspevok od používateľa ⓢⓐⓟⓛⓔⓡ »

dakujem, uz to ide :)

Ak tomu spravne chapem, tak vExcel je vlastne ten excel co mi spusti to kliknuti na button1, ale ako sa da spravit aby som pomocou open dialogu otvoril nejaky excel a precital data ktore nasledne vyhodnotim?

PS: Vsetku literaturu co som ohladom tohto nasiel je len v anglictine a ja z anglictiny ovladam zaklady tak to nieje pre mna to prave :/
zaloo
Novice
Novice
Príspevky: 1
Registrovaný: 20 máj 2010, 14:00

Re: [Delphi] OLE, Excel

Príspevok od používateľa zaloo »

Zdravim. :)
Ja mam tiez maly problem.
Pristupujem do xls cez ADO komponenty a nasledne ich preklapam za urcitych podmienok na MSSQL server. Program mi bezi ber problemov, ale ked chcem osetrit Run-time chyby tak mi nepozna EOleException.

Kód: Vybrať všetko

 try
  // nieco
 except on  EOleException do 
 begin
   application.Terminate;
 end;
end;
pise Undeclared identifier: 'EOleEception' ... skusal som aj EOleEception deklarovat ako triedu Exception , ale nepomaha.
Viete v com je problem ? V Delphi len zacinam, kodim v sql :)
Dik moc.
Napísať odpoveď