Potrei aver scritto questo post 45 volte, ormai, e tutte le volte ci ricasco. E bestemmio.
Prima o poi ti capita che il cliente ti chieda “l’export per excel” di qualche tabulato. Tu al volo allora gli proponi l’export in csv che tanto Excel lo apre come fosse un xls, sperando di svincolarti dai micragnosi (e fino a poco tempo fa) misteriosi formati proprietati Microsoft. Capra e cavoli? Tutto liscio? Certo, come no.
Prepari il tuo bell’export CSV come tutti sanno fare e magari approfondisci anche il discorso.
Con OpenOffice, ovviamente, tutto liscio.
Ecco invece i problemi con Excel (sarei tentato di dire “qualsiasi versione”, ma in realtà ho provato solo con MS Office 2003)
- per Excel la “C” di “CSV” sta per “semicolon” e non per “comma”. Già. Occorre separare i campi con un punto e virgola, non con una virgola (ancora una volta OOo non fa una piega cambiando questo “default” – si limita a dire “Oh, OK.”; giuro che l’ho sentito) [edit: come dice calca nei commenti questo comportamento potrebbe essere una impostazione del locale... boh]
- il problema più grave, però, è che per Excel un CSV può essere soltanto in LATIN1 e niente altro. Avete codificato il CSV in UTF8? Tempo perso. No way. Niente da fare. Da qualche parte si legge che aggiungendo il dovuto BOM all’inizio del file il signorino dovrebbe onorarlo… a me non è sembrato.
La cosa curiosa, per quanto riguarda quest’ultimo punto, è che se da Excel stesso esporti uno sheet in fomato CSV contenente dei caratteri non ASCII, il CSV che ottieni è appunto non in formato UTF8, e dunque avrai le famose accentate sminchiate. Va da sé che non esiste opzione per modificare questo comportamento.
Se sei stato più fortunato di me, fammelo sapere e te ne sarò grato.
14 Responses to “Esportare CSV per MS Excel? Sembra facile!”
se non ricordo male, excel mastica anche i file html contenente delle tabelle.
dovrebbe bastare crare una table in un file export.xls e excel se lo dovrebbe leggere tranquillamente. per il supporto UTF8 in questo caso non ho esperienza.
Calca, sì è vero, Infatti questa era una ipotetica soluzione alternativa di cui avevo letto (da provare, comunque). Resta il fatto che un CSV è comunque maneggiabile un po’ meglio di una tabella HTML quando non si debba usare Excel…
si.
se non ricordo male (non ci metto la mano sul fuoco) ma in excel il separatore dipende dal lingua utilizzata.. (chissà se ci sono le info)
Possibile, visto che di questo non ho trovato niente… io l’ho solo dedotto facendo un “export CSV” direttamente da Excel. Ora mi fai venire il dubbio che su un Excel in inglese il “;” non funzioni :)
Oddio, boh. Il mio Excel è in inglese e Windows in italiano :)
Io sono al 99% su java e fortunatamente quando mi sono ritrovato a dover fare un excel, ho potuto usa delle api apposite: jexcel (http://jexcelapi.sourceforge.net/).
Per esperienza, quando c’è da gestire un csv per excel cerco di evitarlo a tutti i costi fino all’ultimo per gli nmila problemi che hai elencato che si presentano in svariate sfaccettature a seconda di versione, lingua office, lingua SO.
> [...] “C” di “CSV” sta per “semicolon” e non per “colon”. [...]
Ciao Claudio,
in inglese virgola si dice “comma” (“colon” sono i due punti)
Enos, oooops, lapsus. Grazie :)
Io uso xlrd e produco file nativi. Funziona benissimo. Ah, già, scusa, devi usare python… :-D
Dio fulmini le strategie non-standard-compliant di Microsoft.
E i creatori dei filtri di importazione/salvataggio di Excel in formati non-xls(x).
Avevo timore che l’esportazione in XML producesse codice senza i tag chiusi, per dire… a membro di segugio… dannazione.
Comunque resta un problema irrisolto, sàllo.
:-(
ciao a tutti,
vi ringrazio per i post che mi hanno chiarito parecchie cose… magari sapete anche questa che mi sta facendo uscire di testa..
sto lavorando su un microcontrollore e devoesportare dei dati e ho una funzione che dal server html(sul microc) mi crea una pagina che dovrebbe essere in csv(nel senso di comma..) vorrei evitare di doverla scaricare clikkando con il dx e facendo esporta in excel. vorrei invece che mi si creasse un link che o me lo esporta automaticamente in excel oppure mi esporta in un file al quale do’ io un’estensione che desidero(cosa ovviamente piu’ comoda..).
Un amico mi ha dato il codice per php che e’ una roba del tipo:
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: inline; filename=dati.xls”‘);
qualcuno sa’ come fare con l’html?
grazie a tutti,
saluti
ps: vi lascio anke la mia mail se qualcuno volesse rispondere direttamente
george850@gmail.com
Ciao Luca,
non in HTML soltanto non è possibile. Il tuo amico ti ha dato la dritta giusta.
Basta andare nelle impostazioni regionali di Windows (pannello di controllo), cliccare su personalizza e selezionare come separatore di elenco la virgola, al posto del punto e virgola.
Mai provato a trasformare con iconv(‘UTF-8′, ‘ISO8859-1//TRANSLIT’, “à”); ?
In bocca al lupo! :-P
Additional comments powered by BackType