So che questa è una vecchia domanda, ma il problema non si risolverà presto. I file CSV sono facili da generare dalla maggior parte dei linguaggi di programmazione, piuttosto piccoli, leggibili dall'uomo in un attimo con un semplice editor di testo e onnipresente.
Il problema non riguarda solo le date nei campi di testo, ma anche qualsiasi cosa numerica viene convertita da testo in numeri. Un paio di esempi in cui questo è problematico:
- CAP / codici postali
- numeri di telefono
- numeri identificativi del governo
che a volte può iniziare con uno o più zeri (0), che vengono eliminati quando convertiti in numerici. Oppure il valore contiene caratteri che possono essere confusi con operatori matematici (come nelle date: /, -).
Due casi a cui posso pensare che la soluzione "prepending =", come menzionato in precedenza, potrebbe non essere l'ideale è
- dove il file potrebbe essere importato in un programma diverso da MS Excel (viene in mente la funzione Stampa unione di MS Word),
- dove la leggibilità umana potrebbe essere importante.
Il mio hack per aggirare questo
Se uno pre / aggiunge un carattere non numerico e / o non di data nel valore, il valore verrà riconosciuto come testo e non convertito. Un carattere non stampabile sarebbe buono in quanto non altererà il valore visualizzato. Tuttavia, il semplice vecchio carattere spaziale (\ s, ASCII 32) non funziona per questo in quanto viene tagliato da Excel e quindi il valore viene ancora convertito. Ma ci sono vari altri caratteri nello spazio di stampa e non che funzionano bene. Il più semplice tuttavia è aggiungere (aggiungere dopo) il carattere di tabulazione semplice (\ t, ASCII 9).
Vantaggi di questo approccio:
- Disponibile da tastiera o con un codice ASCII facile da ricordare (9),
- Non disturba l'importazione,
- Normalmente non disturba i risultati di Stampa unione (a seconda del layout del modello, ma normalmente aggiunge solo un ampio spazio alla fine di una riga). (Se questo è comunque un problema, osserva altri caratteri, ad esempio lo spazio di larghezza zero (ZWSP, Unicode U + 200B)
- non è un grosso ostacolo quando si visualizza il CSV in Blocco note (ecc.),
- e potrebbe essere rimosso da trova / sostituisci in Excel (o Blocco note ecc.).
- Non è necessario importare il CSV, ma è sufficiente fare doppio clic per aprire il CSV in Excel.
Se c'è una ragione per cui non vuoi usare la scheda, cerca in una tabella Unicode qualcos'altro adatto.
Un'altra opzione
potrebbe essere quello di generare file XML, per i quali un certo formato è accettato anche per l'importazione dalle versioni più recenti di MS Excel e che consente molte più opzioni simili al formato .XLS, ma non ho esperienza con questo.
Quindi ci sono varie opzioni. A seconda delle esigenze / dell'applicazione, una potrebbe essere migliore di un'altra.
aggiunta
Bisogna dire che le versioni più recenti (2013+) di MS Excel non aprono più il file CSV in formato foglio di calcolo - un ulteriore rallentamento nel flusso di lavoro che rende Excel meno utile ... Almeno, esistono istruzioni per aggirarlo. Vedi ad esempio questo StackOverflow: come visualizzare correttamente i file .csv in Excel 2013?
.