Newsgroup: it.comp.lang.delphi
Titolo: Lentezza su OleObject ed Excel

Salve a tutti,
ho un problemino di lentezza quando creo questo tipo di oggetto, premetto
che comunque
il programma funziona a dovere.
il codice è il seguente:
Excel := CreateOleObject('Excel.application');
Excel.Visible := False;
Excel.WorkBook.Open('c:\pippo.xls');
Excel.WorkSheets['Foglio1'].Select;
ShowMessage('Inizio....');
In pratica da quando premo il bottone a quando appare la finestra di avviso,
passa parecchio tempo (2 minuti circa piu o meno).
Il resto del programma elabora i dati sul foglio Excel in maniera corretta
ed abbastanza rapida.
Avete dei suggerimenti a riguardo?
Grazie in anticipo,
Mauro
P.S.
    L'ho provato su 2 pc diversi sia su win2000 che win98 ma il risultato è
lo stesso,
    sbaglio io qualche cosa?

 Mauro
-- 
Ciao, Anto', [35, 143, AQ] 
MB C SC 220 CDI Magma Red

 subito dopo l'elaborazione,
Questa modifica non ha avuto nessun esito positivo.....
ciao Mauro

 mi sembrano comunque parecchi non credi ?
ciao, ricordo che tempo fa avevo sviluppato un piccolo applicativo che 
memorizzava i dati su tabelle Excel e i tempi (su un Duron 600) erano 
dell'ordine della 20ina di secondi per scrivere/leggere...
-- 
Mauro Falzari ( 
http://digilander.libero.it/mauro.falzari
 )
"Se guardi nell'abisso, anche l'abisso guarda in te." (Friedrich Nietzsche)

 potente),  mi sembrano comunque parecchi non credi ?
dalla prova che ho fatto sul mio pc p4 a 2,4ghz leggere dati da un file 
excel di 650 righe per 8 colonne e salvarli su un file ascii impiega circa 
10 secondi...


 passa parecchio tempo (2 minuti circa piu o meno).
Effettivamente e' parecchio, sul mio vecchio P 200 con NT4 ho una
apertura in circa 450-500 ms (la prima volta, poi si scende a circa 350
ms: credo dipenda dalla inizializzazione di COM: e del resto i 2 thread
aggiuntivi rimangono aperti anche dopo la chiusura di XL).
  Start := GetTickCount;
  Xl := CreateOleObject('Excel.application');
  Xl.Visible := False;
  Xl.WorkBooks.Open('C:\Documenti\Cartel2.xls');
  Xl.WorkSheets['Foglio1'].Select;
  Open := GetTickCount;
  Xl.Quit;
  Xl := Unassigned;
  ShowMessage(Format('Tempo apertura: %d ms; totale %d ms',
    [Open - Start, GetTickCount - Start]));
Saluti
Paolo Arosio

I 18 secondi che intendo io però sono relativi alla sola apertura del file,
infatti la finestra appare per avvisare che sta per iniziare l'elaborazione.
Per l'elaborazione e cioè intendo.....scrivere 3118 record su l file excel
(x 10/12 colonne non ricordo di preciso), il mio Athlon 2400+ impiega 60
secondi (credo che piu o meno ci siamo a tempi).
Per caso tu utilizzi un codice diverso dal mio per aprire il file ?
bye.....Mauro


Guarda la risposta che ho dato ad Antò.
Bye,
Mauro


 I 18 secondi che intendo io però sono relativi alla sola apertura del
file,
Quale e' la dimensione del file che apri?
Fai la prova su un file vuoto. Se trovi gli stessi valori mi parrebbe
strano.
Saluti
Paolo Arosio

 file ? bye.....Mauro
ti allego la procedura che uso:
procedure TfmMain.btnCaricaDatiClick(Sender: TObject);
var
  ExcelApp: OleVariant;
begin
  OpenDialog1.Filter := 'Files di Excel|*.xls|Tutti i files|*.*';
  OpenDialog1.DefaultExt := '*.xls';
  if OpenDialog1.Execute then
  begin
    FileNameEdit2.Text := OpenDialog1.FileName;
    try
      ExcelApp := CreateOleObject('Excel.Application');
    except
      ShowMessage('Excel non è installato?');
      Exit;
    end;
    ExcelApp.Workbooks.Open(OpenDialog1.FileName);
    //ciclo for che legge i dati   
    if CheckBox1.Checked then
    begin
      ExcelApp.Visible := True;
      ExcelApp.Workbooks[1].WorkSheets[2].Activate;
    end
    else 
    begin
      ExcelApp.DisplayAlerts := False;
      ExcelApp.Quit;
    end;
    ExcelApp := Unassigned;
  end;
end;


       Exit;
Pur essendo altamente improbabile che la CreateOleObject fallisca per motivi
diversi dal solito "Class nont registered", suggerirei di mostrare comunque
il messaggio restituito dalla eccezione.
Se un cliente telefona e fa:
"Non riesco a esportare i dati su Excel: mi dice non è installato, ma excel
è installato..."
cosa gli si risponde?
Bye
AS


 Se un cliente telefona e fa:
quale cliente!!! E' un programmino ad uso e consumo personale...


Salve gente..........ho risolto.
Avevo inserito anche due linee per selezionare il tipo di font e la
grandezza del carattere da utilizzare (credevo fossero insignificanti per il
problema da me esposto).
Invece dopo un accurata analisi ho scoperto che queste due righe di comando
mi cambiava il font ed il fontsize di tutto il foglio (da qui i 20 sec. di
attesa).
Vi ringrazio comunque per la gentile collaborazione e disponibilità.
A presto........Mauro.