Newsgroup: it.comp.lang.delphi
Titolo: Esportare database in word o excel

Come da titolo, mi hanno detto che si puo' esportare un database in
formato word o excel. Come ?
--- posted by geoForum on 
http://www.delphiedintorni.it

 formato word o excel. Come ?
O usi COM, o utilizzi qualche componente terze parti per la scrittura
raw del formato OLE2 e derivati oppure, per XLS, esporti in tabelle
HTML e lo salvi con estensione XLS.
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.


Possibile che sotto COM ci sia solo un componente ? Altrimenti, qualche
programma free ?


 Possibile che sotto COM ci sia solo un componente ? 
Cosa intendi per "sotto COM"?
Scaricati la suite Office Partner da 
sf.net
.


 formato word o excel. Come ?
Per excel puoi farti un banalissimo file ascii chiamato pippo.csv 
composto dai valori dei singoli campi separati dal punto e virgola.
Se la tabella non è eccessivamente grande, una soluzione semplice 
semplice è quella di usare un componente memo in cui scrivere riga per 
riga i campi separati dal punto e virgola. Finito di scrivere fai un bel:
memo1.Lines.SaveToFile('pippo.csv');
Per quanto riguarda word ti puoi farti un bel file rtf (magari partendo 
da uno già fatto ed utilizzato come template.
Queste sopra sono soluzioni che non richiedono componenti "strani" e 
facilmente esportabili su altri linguaggi
Ciao
Gianni

da uno già fatto ed utilizzato come template.
Di preciso come si fa ?


 Di preciso come si fa ?
Supponiamo che hai una tabella clienti così fatta:
nome
cognome
indirizzo
Vai su word e fai un testo così fatto:
Titolo report
(grassetto)nome - (grassetto)cognome - (grassetto)indirizzo
(inserisci un ritorno a capo finale)
Adesso salvati il testo in rtf (da word durante il salvataggio). Quello 
sarà il tuo template. Se lo apri con un editor di testo (notepad per 
esempio), noterai che è fatto da una serie di comandi "strani" poi 
finisce con qualcosa del genere:
{\b Nome}{ \endash  }{\b Cognome}{ \endash  }{\b Indirizzo
\par }{\par }
Non ti resta che aprire la tabella "clienti", scorrere tutti i record.
Per ogni record ripeti:
{\b Nome}{ \endash  }{\b Cognome}{ \endash  }{\b Indirizzo
\par }{\par }
sostituendo i vari Nome, Cognome, Indirizzo con i campi della tua 
tabella. Finito, salvi il tutto. Adesso hai un testo richiamabile da 
word contenente i dati della tua tabella.
Ciao
Gianni



Questo pero' presuppone che lo faccia io ogni volta. A me serve che lo
faccia il mio programma, con un bottone che mi esporta il db in un' altro
formato


 formato
1) Premi sul pulsante "esporta in rtf"
2) Leggi il file rtf (chiamiamolo template)
3) leggi i singoli campi per ogni riga crei al volo {\b ValoreCampo}{ 
\endash  } sostituendo "ValoreCampo" col valore del tuo campo.
4) a fine record aggiungi {\par }
5) A fine tabella presenti un bel filedialog e fai scegliere il nome 
all'utente (diverso ovviamente dal file template).
In questo modo ottieni un rtf contenente tutti i valori separati da un 
trattino (una riga per ogni record).
Questa è un idea, stà a te vedere come eventualmente espanderla per le 
tue esigenze :-)
Questa procedura l'ho già usata sul web con php e funziona.
Ciao
Gianni