--
"La legge, in Italia, è come l'onore delle puttane"
(Curzio Malaparte)
> ho bisogno di estrapolare dei dati da un db mysql (nomi e indirizzi) ed
> esportarli in un file Excel.
> Ho trovato molti esempi e la procedura è semplice (es. qui:
> http://tinyurl.com/4lhhyae), però io ho bisogno di creare più fogli di
> lavoro e assegnare loro dei nomi precisi, in quanto il file dovrà essere
> dato in pasto ad un'altra applicazione che pretende queste specifiche...
> e non riesco a trovare informazioni utili al riguardo. Mi sapete
> aiutare?
ma tutto questo cosa c'entra col PHP ?
Beh, è vero che forse riguarda di più le specifiche dei documenti Excel,
ma visto che l'intento è quello di realizzare uno script PHP per
esportare immagino che qualcuno si sia già scontrato con problematiche
simili.
In caso contrario chiedo scusa e mi inginocchio dietro la lavagna a muro. :)
> Ho trovato molti esempi e la procedura è semplice (es. qui:
> http://tinyurl.com/4lhhyae),
"PHP possiede delle particolari intestazioni per chi è possibile
stabilire un contatto ed interagire con software esterni"
mi sembra un articolo indecoroso.
Tra l'altro sta semplicemente creando una tabella HTML, il comportamento
su come questa viene importata è di Excel.
> però io ho bisogno di creare più fogli di
> lavoro e assegnare loro dei nomi precisi, in quanto il file dovrà
> essere dato in pasto ad un'altra applicazione che pretende queste
> specifiche... e non riesco a trovare informazioni utili al riguardo.
> Mi sapete aiutare?
Se vuoi andare con le table devi cercare nella documentazione di Excel.
In alternativa puoi cercare una libreria già pronta che possa scrivere
il formato nativo di Excel, dato che non basta l'estensione per
determinare il formato di un file. In questo caso puoi creare il
documento come vuoi.
Uno di quelli che avevo fatto io a suo tempo era una riga d'intestazione
nero bold su giallo, prima riga bloccata nello scroll verticale, un
foglio per mese (da meseCorrente a 1)
Serviva per preparare i carichi di posta massiva che poi formattavo per
spedirli tramite poste italiane
Le segretarie degli uffici lo trovavano comodo, io pure :)
M
> Ma perchč complicarsi la vita con il formato excel, e non crei il file
> in un normalissimo e universale CSV o TSV (campi separati da
> tabulazione), che excel apre e interpreta correttamente?
Perchč l'OP ha scritto che "il file dovrŕ essere dato in pasto ad
un'altra applicazione che pretende queste specifiche".
Certo che per scegliere Excel come formato di interscambio dati bisogna
essere storditi forte...
La butto là... ti crei un template excel, lo salvi in xml. Dentro ci
sono tutte le informazioni per creare header, fogli e celle, hai anche
gli style.
Partendo da quello, in PHP devi estrapolare i dati e sistemarli dove ti
servono nell'xml, xml che sputerai fuori dal php.
L'ho fatto svariate volte in c#, ma alla fine si tratta di creare una
stringa xml valido e contenente i dati che ti servono.
non mi ricordo se salvavo il file come .xls o come xml. in ogni caso
penso vada bene anche il csv, dipende dalle tue specifiche e da come
devi mandare il file alle altre applicazioni.
ciao.
Infatti...
comunque, come nell'esempio di Motosauro, questo essenzialmente mi serve
per generare un file XLS di nominativi e indirizzi da dare in pasto a un
software di gestione della corrispondenza online.
Quindi la mia unica necessità è creare dei fogli che rispettino i
requisiti formali dell'applicativo, senza perdermi in finezze di sorta :)
Per ora ho trovato Phpexcel (http://phpexcel.codeplex.com/) e lo sto
testando. Funziona, ma è fin troppo sovradimensionato per le mie misere
esigenze...
E' quello che faccio io in PHP e Java. Comodissimo. Ma non mi sembra che
si possano aggiungere più fogli nello stesso file excel.
> E' quello che faccio io in PHP e Java. Comodissimo. Ma non mi sembra che
> si possano aggiungere più fogli nello stesso file excel.
[1] mostra esplicitamente il foglio di lavoro "Sheet1"
[1]
<http://www.ibm.com/developerworks/opensource/library/os-phpexcel/index.h
tml>
forse perrché non ci sono dati nel foglio 2 e excel si fa il
ragionamento che non vale la pena creare altri nodi Worksheet.
Prova a creare piu nodi Worksheet:
<Worksheet ss:Name="Sheet1">
chiaramente con diversi nomi ;)
ciao
> Prova a creare piu nodi Worksheet:
Non sono l'OP.
> <Worksheet ss:Name="Sheet1">
> chiaramente con diversi nomi ;)
È quello che intendevo suggerire col mio messaggio.
[ ... ]
> Mi sapete aiutare?
http://pear.php.net/package/Spreadsheet_Excel_Writer/docs
In particolare per aggiungere nuovi fogli di lavoro
L'esempio che ti fanno loro nella prima pagina ti fa già capire la
facilità d'uso della classe:
Typical usage
<?php
require_once 'Spreadsheet/Excel/Writer.php';
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send('test.xls');
// Creating a worksheet
$worksheet =& $workbook->addWorksheet('My first worksheet');
// The actual data
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);
// Let's send the file
$workbook->close();
?>
ciao
Mauro
> http://pear.php.net/package/Spreadsheet_Excel_Writer/docs
[…]
> L'esempio che ti fanno loro nella prima pagina ti fa già capire la
> facilità d'uso della classe:
Tombola, pensavo proprio a qualcosa del genere.
Nel frattempo ho testato Phpexcel (http://phpexcel.codeplex.com/) e
sembra funzionare.
Sono 20 mb di codice; è addirittura eccessivo per le mie necessità visto
che ho la semplice esigenza di salvare un file non formattato.
Comunque funziona... a metà, nel senso che il file generato viene
correttamente aperto da Excel e Openoffice, ma la mia applicazione si
rifiuta di importarlo perché il formato non sarebbe corretto (a questo
punto direi che è un limite suo).
Risultato: apro il file in Excel, lo risalvo e lo importo... che rottura
di maroni :-(