PDA

Visualizza Versione Completa : Separatore elenco in excel per file .csv come output



acard
12-06-09, 12:11
Ciao a tutti, ho un problema alquanto fastidioso.
Premetto che nelle mie impostazioni internazionali sul computer ho impostato come lingua l'italiano, ma come separatori delle cifre decimali il sistema inglese, vale a dire il " . " per i decimali e la " , " per le centinaia.
Detto questo ecco il problema: ho un file excel che devo convertire in .csv in modo da farlo poi leggere ad una pagina .php per la creazione di una tabella (e questo vuole che gli si specifichi qual è il separatore di elenco). Quando dentro Excel scelgo l'opzione "Salva con nome" e "CSV" non capisco per quale diavolo di motivo a volte mi salva il file con il " ; " come separatore e a volte con la " , " cosa questa che cambia anche sensibilmente il file in uscita: se usa i " ; " (io ho bisogno che sia così) tutto bene, se usa invece le " , " aggiunge dei doppi apici ogni volta che trova una cella al cui interno sia presente una virgola. E questo mi fa sballare tutto in fase di creazione della tabella con php. Che caspita devo fare per forzarlo ad usare i " ; ".
Ho provato anche ad usare CSV (Windows) piuttosto che CSV (MS-DOS) piuttosto che CSV, ma il risultato è sempre lo stesso.
Non so dove andare a sbattere la testa. :muro
Grazie in anticipo a chi mi può aiutare!

flashcream
12-06-09, 12:15
tutti gli spunti del caso: http://www.tuttologia.com/macp2p/showthread.php?t=39140

acard
12-06-09, 13:36
Avevo gia' letto e trovato inutile per il mio problema: intanto io non devo importare, ma solo esportare, in secondo luogo non ho numeri, ma solo testo e al massimo, ore. A me quindi interessa esportare il file.xls in un file.csv in cui i separatori siano dei " ; ". Il problema sta nel fatto che del tutto a caso (fin che non trovo la causa, almeno), pur ripetendo sempre la stessa procedura di salvataggio, a volte usa il " ; " a volte la " , ". Dovendo poi leggere il file.csv con php, ho bisogno che il file sia sempre formattato nel modo corretto e con il corretto separatore, cioe' il " ;". (questo file cambia spesso perche' e' una lista di partecipanti ad un congresso ed il relativo programma, che sono ancora in fase di definizione... e non voglio creare a mano una tabella con html e modificarla ogni volta, motivo per cui uso il php)
Altre idee?!

flashcream
12-06-09, 13:54
Avevo gia' letto e trovato inutile per il mio problema


bene, allora fai finta di aver letto sopra: "alcuni spunti" e non tutti gli spunti. qui mi fermo, anche perchè bisognerebbe possedere proprio quel file per le dovute verifiche e/o prove. parlo per me. vediamo se altri aggiungono qualcosa.

acard
12-06-09, 15:24
Intanto ti ringrazio...
la cosa strana e' che questo mi succede anche con un secondo file, anche in questo caso a volte usa la virgola a volte no. E non riesco a trovarne la causa.
Riflettevo poi su un fatto: su un Winzoz, ci sarebbero due opzioni, vale a dire modificare il separatore di elenco dentro le opzioni-internazionali dentro excel stesso, oppure nelle impostazioni della regione (son sicuro riguardo ai separatori dei numeri, ma non ricordo quelli di elenco, in questo secondo caso), in pannello di controllo. Sul mio amatissimo mac, trovo le opzioni per i numeri in preferenze di sistema-internazionale (ma non c'e' il separatore di elenco) ma non dentro excel (excel 2004 per mac).
Attendo fiducioso!

Peterpan
12-06-09, 16:23
Intanto ti ringrazio...
la cosa strana e' che questo mi succede anche con un secondo file, anche in questo caso a volte usa la virgola a volte no. E non riesco a trovarne la causa.
Riflettevo poi su un fatto: su un Winzoz, ci sarebbero due opzioni, vale a dire modificare il separatore di elenco dentro le opzioni-internazionali dentro excel stesso, oppure nelle impostazioni della regione (son sicuro riguardo ai separatori dei numeri, ma non ricordo quelli di elenco, in questo secondo caso), in pannello di controllo. Sul mio amatissimo mac, trovo le opzioni per i numeri in preferenze di sistema-internazionale (ma non c'e' il separatore di elenco) ma non dentro excel (excel 2004 per mac).
Attendo fiducioso!



Sto lavorando con Office per windows. Nella sezione Opzioni (locale in office, quindi non del sistema) ho una tab "International" dove posso scegliere se utilizzare i separatori secondo le impostazioni del sistema oppure ad hoc per il documento corrente (quindi posso impostare cio' che voglio per migliaia e decimali).

Cosi' com'e', selezionando le impostazioni del sistema (Inglese, con virgola separatore delle migliaia e punto separatore decimale) l'export in CSV usa rigorosamente e solo la virgola come separatore.

acard
12-06-09, 16:38
ma sul mac questa tab non c'e'... o forse mi sono rimbambito e non la trovo io!

Peterpan
12-06-09, 16:52
Dammi tempo di tornare a casa per verificare allora, non ho il mac con me ! :smt039

Padmé Amidala
12-06-09, 17:17
Non so se serve ma in Excel 2008 si dice questo:

Nota: In Excel viene utilizzato il separatore delle migliaia del sistema Mac OS. È possibile specificare un diverso separatore di sistema modificando le impostazioni internazionali nelle preferenze del sistema Mac OS X.

Nota: Le impostazioni internazionali della valuta determinano la posizione del simbolo dell'euro. Il simbolo può venire visualizzato prima o dopo il numero e tra il simbolo e il numero può essere presente uno spazio. Le impostazioni internazionali determinano inoltre il simbolo decimale e il separatore delle migliaia. Per controllare queste impostazioni, utilizzare Internazionale nelle Preferenze di sistema di Mac OS X.

Insomma sembra che si possa fare solo tramite il sistema...

acard
15-06-09, 13:40
Ok questo, ma restano due fatti:
1) nelle impostazioni internazionali posso modificare il separatore delle migliaia mettendo il punto o la virgola in base alla regione che scelgo di usare, ma certamente non posso mettere un " ; " come separatore delle migliaia, sia perche' non avrebbe senso, sia perche' in ogni caso non posso modificare la forma del separatore come preferisco, con i caratteri della tastiera
2) resta il fatto che comunque, il processo di esportazione del file.xls in .CSV sceglie del tutto CASUALMENTE quando usare la virgola piuttosto che il punto e virgola!! Oggi per esempio ho riprovato ad esportare lo stesso file, esattamente nello stesso modo dell'ultima volta, e ha deciso di usare il punto e virgola!
Ma se non e' controllabile, come caspita faccio????

Padmé Amidala
15-06-09, 15:31
Sul forum excel mac c'era uno che doveva trasmettere dei file csv a colleghi su windows fornendo quale separatore il pipe (una riga verticale) e che non capiva come mai nel mac, contrariamente a windows, non può scegliere il separatore che voleva ma doveva tenersi la virgola.

Gli hanno spiegato che dato che in .csv la "c" sta proprio per comma (virgola) non era sorprendente che Microsoft non fornisse un'alternativa a questa comma, ma che anzi, era sorprendente che questa alternativa la fornisse per Excel windows....

Comunque ha risolto così. Mi limito a riferire quanto ho trovato....Non riesco a capire se quanto ha trovato questo tizio come soluzione sia stupido, poco pratico, inutile,... ma l'esigenza che aveva era come la tua, salvo che lui aveva bisogno di un altro simbolo.

Re: CustomHow can I create pipe "|" delimited .csv ?
thanks all! I was able to figure out how to create what i needed.

First I saved the spreadsheet as a .csv
Then I opened the csv in Word and used the Edit->Replace function to change all "," into "|"

I saved that as a csv and then opened a new Excel spreadsheet and used Data-> Get External Data->Import Text File and opened the .csv I just made in Word

In Step 2 of the Text Import Wizard, I was able to change the delimiters to in the Other checkbox "|"

Ho visto infatti che nel menu File > Importa > CSV > Delimitati si può scegliere il punto e virgola o qualsiasi altro simbolo.

acard
15-06-09, 15:52
Tutto vero, e infatti avevo pensato di usare emacs per fare la sostituzione delle virgole in punti e virgola, ma questa procedura automatica viene a creare un problema non da poco:
ogni volta che in una cella compare del testo con una virgola, la conversione in .CSV mette tutto il contenuto della cella tra doppi apici e lascia la virgola. Se io sostituisco automaticamente tutte le virgole, in questi casi faccio delle sostituzioni scorrette, e aggiungo a tutta la riga una colonna in piu' (avendo aggiunto un separatore dove di fatto non esisteva).
La soluzione sarebbe fare uno script che sostituisca le virgole quando non sono contenute tra apici, e che poi elimini anche tutti gli apici.... molto dispendioso in termini di tempo, cosa che in questo momento non ho, oltre che soluzione troppo arzigogolata!!

Padmé Amidala
15-06-09, 15:59
E' vero chr in quella discussione o in altre simili proponevano o postavano degli script...

acard
13-07-09, 16:00
mmm, qualcuno ha qualche idea illuminante??