Newsgroup: it.comp.lang.delphi
Titolo: Delphi e trasferimenti ad Excel

Ho la necessita' di trasferire dei dati contenuti in delphi sotto DB
paradox in excel.
Ho fatto delle prove con OLE e ho scritto questo:
Excel:=CreateOleObject('Excel.application');
Excel.visible:=True;
Excel.WorkBooks.Add(-4167);
Excel.WorkBooks[1].WorkSheets[1].Name:='Tavola';
sheet:=Excel.WorkBooks[1].WorkSheets['Tavola'];
for r:=1 to 10 do
 begin
   for i:=1 to 140 do
       begin
          Excel.ActiveSheet.Cells[r,i].Formula := 'prova stefano';
       end;
end;
Il problema e' che il sistema e' molto lento. Per eseguire quel
sorgente (sono solo 10 righe di dati) ci mette piu' di 6 secondi e
considerando che devo trasferire grosse moli di dati non mi va
bene....
C'e' qualche altro sistema oltre al fatto di scrivere un file di testo
e poi importarlo in excel ?
Grazie
Stefano

 end;
Prima di  tutto, questo codice presenta un problema di connessione OLE.
Se Excel è gia aperto, lui te ne apre comunque una nuova istanza.
Quindi:
try
  Excel := GetACtiveOleObject('Excel.Application');
  except
  on excpetion do
    Excel := CreateOleObject(....
end;
Poi, se metti visible a True, si "ammoscia" tutto xche deve fare il refresh
dello schermo ogni volta che inserisci un valore in una cella.
Quindi, ti conviene prima eseguire tutto, poi mettere il visible a True.
bye
as
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Quindi, ti conviene prima eseguire tutto, poi mettere il visible a True.
Provato anche questo, ma le prestazioni non migliorano di molto....
Ah, mi ero dimenticato di dire: delphi 5 + excel 2000
Altri trucchi ??
Stefano.

 Ah, mi ero dimenticato di dire: delphi 5 + excel 2000
Il pc su cui fai questa cosa che macchina è?
Quanta RAM ha?
Quanto spazio libero su disco?
OS?
Bye
AS


OS?
Win 2000

Anch'io avrei necessita di trasferire dei dati contenuti in delphi sotto DB
paradox in excel.
Mi potresti spiegare meglio la tua procedura?
X esempio Excel. che componente è? Uno StringGrid?
Xkè se ricopio tutto il tuo codice e credo un oggetto StringGrid di nome
Excel mi dice:
[Error] Unit1.pas(31): Undeclared identifier: 'CreateOleObject'
Cos'è questo OLE?
Cosa devo fare?
Che cosa vogliono dire i numeri -4167?
Xkè a quel ciclo hai dato 140?
Grazie.
try
  Excel := GetACtiveOleObject('Excel.Application');
  except
  on excpetion do
    Excel := CreateOleObject(....
end;


Xkè a quel ciclo hai dato 140?
Perche' dovevo provare a trasferire tracciati record con 140
campi.....
Stefano

OLE= Object Linking Embeddeing
In server OLE è un applicazione e/o dll o roba simile che mette 
a disposizione una serie di strumenti.
In genere questi strumenti sono metodi e proprieta.
Un insieme di metodi e proprieta di un server ole viene definito
INTERFACCIA.
A che serve?
Ad esempio, ti puoi collegare a Excel/Word etc e "dirgli" di fare 
una serie di operazioni quali:
Apri un documento
Stampa un documento
Crea un nuovo documento
Cambia il colore/formato di una riga/cella/parola/frase etc
Cioè, quello che normalmene fai a mano quando lavori con queste
applicazioni lo traduci in sequenze di comandi inviati da una tua applicazione.
Se avessi cercato nell'help di delphi le funzioni CreateOLeObject 
e getActiveOleObject avresti visto che sono definite nella unit
COMOBJ, che non è inclusa per default nelle uses: la devi aggiungere tu.
Queste due funzioni restituiscono una interfaccia IDispatch.
Ovvero, un handle di un oggetto della classe specificata
come paraemtro.
A quel punto, a questo handle puoi applicare metodi e proprieta
della suddetta classe.
Ad esempio, se guardi nella guida VBA di Excel o Word trovi
una descrizione completa di cio' che puoi fare con loro via ole.
Tieni conto che molte delle funzionalita standard di Windows sono gestite
tramite server ole che forniscono vari strumenti.
COM, DCOM, e COM+ sono delle evoluzioni di OLE, la cui prima
implementazione risale a Win31.
Domanda cattiva:
Possibile che uno sviluppatore software delphi/vb o altro che sia
per ambiente Windows non abbia mai sentito parlare di OLE? :))


Provo e vi faccio sapere, intanto grazie!

Ehi, ragazzi grazie, adesso l'esportazione del database in excel funziona!!!
Una cosa soltanto volevo chiedervi, ma volendo ridimensionare la larghezza
delle
celle di excel come posso fare?
Posso agire anche sul carattere per esempio impostando il grassetto?
Grazie di tutto...

 Posso agire anche sul carattere per esempio impostando il grassetto?
 
Leggi nella guida VBA di M$Excel e trovi tutto.


Ho visto, c'è un sacco di roba, grazie!

> Leggi nella guida VBA di M$Excel e trovi tutto.
Ho letto nella guida ma....
Per modificare l'altezza della cella ho provato a fare cosě:
Excel.Range.Cells[R,C].Height := 100;
ma mi dice PARAMETRO NON VALIDO, cosa sbaglio?
POS. scusa la mia ignoranza, non sono un professionista!!!