Importazione CSV di Excel che considera le stringhe di numeri citate come valori numerici, non come stringhe


13

Ho un'applicazione web che esporta i suoi dati in un file CSV. Ecco una riga di esempio del file CSV in questione:

28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"

Dal momento che non riesco a pubblicare un'immagine, dovrò spiegare i risultati in Excel. Il campo "0316295" viene trasformato in un numero e lo 0 iniziale scompare. "8316012,8315844" viene interpretato come un unico numero: 83.160.128.315.844. Questo, ovviamente, non è il risultato previsto.

Ho visto persone raccomandare una citazione unica per questi casi, ma non funziona neanche.

28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"

La virgoletta singola è sempre visibile nella cella in Excel, anche se inserisco un numero con una virgoletta singola iniziale, mostra solo la stringa desiderata e non la virgoletta singola con la stringa.

L'importazione non è la stessa della digitazione, a quanto pare.

Qualcuno ha una soluzione qui?


Sei in grado di importarlo usando LibreOffice o qualcosa del genere? Ho appena importato e ottenuto: 28 65154 21/02/2013 00:00 false 0316295 8316012,8315844 MASCHIO (se riesci a leggere quello ...?)
FreudianSlip

Questa domanda è simile e offre alcune buone soluzioni: superuser.com/questions/234997/…
Brad Patton

@FreudianSlip No, non possiamo usare alcuna soluzione di terze parti. Gli utenti fanno clic sul pulsante "scarica CSV" e il file si apre in Excel. Questo è l'ambiente con cui abbiamo a che fare. Non posso davvero complicarlo.
Michael Oryl,

@ Brad Ho letto quel post prima in cerca di soluzioni. È da lì che ho ottenuto la singola opzione di preventivo, che non mi piace davvero poiché Excel mostra il preventivo nella cella stessa quando viene importato da CSV (anche se non lo mostra se digiti la stessa cosa in te stesso).
Michael Oryl,

quindi controlli almeno l'app Web? come hai intenzione di implementare la soluzione in modo trasparente dagli utenti? Ho aggiornato la mia risposta in modo che gestisca correttamente i valori con le virgole
Alex P.

Risposte:


10

Questo dovrebbe funzionare

28,"65154",02/21/2013 00:00,"false",="0316295","=""8316012,8315844""","MALE"

No, questo altera il valore con due numeri. Otteniamo = "1234567 senza virgolette di chiusura.
Funziona

1
se controlli l'applicazione web puoi implementare l'esportazione nel formato SYLK en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK) . ha un controllo molto migliore della rappresentazione dei dati. in caso contrario - potresti facilmente creare uno script del convertitore
Alex P.

2
aggiornata la risposta in modo che gestisca correttamente i valori con virgole
Alex P.

Che ha gestito correttamente i valori separati da virgola. Grazie.
Michael Oryl,

Grazie. Questa soluzione ha risolto un problema anche con l'importazione di numeri esadecimali. Excel sostituisce 00E3con 0 (0 * 10 ^ 3) e lo visualizza come notazione scientifica (0.00E + 00). In realtà fa lo stesso per "00e3"senza =. Ma ="00e3"funziona perfettamente. (apertura di un CSV con Excel 2010)
mpag

12

Per mantenere gli zero iniziali, è possibile impostare il formato di quella colonna specifica su Testo nell'Importazione guidata testo.

  1. Avviare l' importazione guidata testo andando alla scheda Dati e facendo clic su Da testo .
  2. Seleziona il file CSV che desideri importare.
  3. Scegli Delimitato e premi Avanti .
  4. Deseleziona la scheda (impostazione predefinita). Scegli la virgola . Assicurati che Qualificatore testo sia impostato su ". Premi Avanti .
  5. Qui è possibile specificare i formati . Fai clic sull'intestazione della colonna di cui vuoi conservare gli zero iniziali. Seleziona testo . (Vedi immagine sotto)

    inserisci qui la descrizione dell'immagine

  6. Premi Fine e seleziona una posizione adatta per i tuoi dati. Risultato del campione:

    inserisci qui la descrizione dell'immagine

Modifica : c'è un altro modo ; fare in modo che l'app Web esporti in un file .TXT delimitato da virgole anziché .CSV (o semplicemente modificare l'estensione del file esportato dopo averlo salvato). Ciò impone a Excel di eseguire la procedura guidata di importazione quando aprono il file. Come ulteriore vantaggio, riduce le possibilità che gli utenti modificino o manomettano i dati grezzi originali.


1
Sì, è certamente vero. Non è davvero conveniente per l'utente finale quando, al confronto, tutto ciò che devono fare è fare clic sul collegamento del generatore CSV sulla nostra app Web ed Excel lo carica automaticamente, anche se con i problemi sopra menzionati. I file CSV sono impostati per essere aperti in Excel e Excel non offre opzioni in quel momento. Li carica e basta. Apprezzo che tu lo abbia sottolineato, però.
Michael Oryl,

1
Esiste un altro modo, ma non so se sia possibile nel tuo caso: fare in modo che l'app Web esporti in delimitato da virgole .TXTanziché .CSV(o semplicemente modificare l'estensione del file esportato). Questo tipo di "forza" gli utenti a passare attraverso la procedura guidata di importazione quando aprono il file.
Ellesa,

Questo è un ottimo punto. Grazie per la segnalazione. Potrebbe essere utile in futuro.
Michael Oryl,

4

Excel considera i valori numerici che iniziano con un carattere di tabulazione come testo.

<tabchar>000000100000200000,ABC,DEF

Apparirà come:

000000100000200000|ABC|DEF

| è il limite della cella (a scopo illustrativo). Quindi, ad esempio, se il tuo sistema genera il file CSV usando il set di caratteri utf-8, puoi aggiungere &#x0009;(Tab Char in Hex) prima del tuo valore numerico per forzare Excel a interpretarlo come testo.


Rimuovere lo spazio prima dei punti e virgola nella rappresentazione esadecimale. Non so come sfuggire al carattere della scheda esadecimale nella risposta, quindi l'ho digitato deliberatamente in modo errato.
Madeyedexter,

1
Ho fatto la fuga. E ho imparato qualcosa di nuovo, grazie. Devo aggiungere questo al mio argomento preferito per il lavoro :)
nixda,

3

Excel rileverà automaticamente il formato di un campo CSV a meno che la colonna CSV non sia in questo formato:

"=""Data Here"""

Questo funziona anche per i fogli di Google


0

Dovresti utilizzare la funzionalità "Dati -> Ottieni dati esterni -> Importa testo da file" in Excel per visualizzarlo come testo. Questa è la procedura guidata di importazione del testo @Kaze menzionata.

L'unico modo per forzare Excel a visualizzare numeri come testo dall'input, senza che l'utente debba fare nulla, è emettere un file Excel e specificare un "formato numerico personalizzato" in esso. Per questo consiglio di utilizzare una libreria di esportazione XLS, poiché non sembra semplice come aggiungere una riga di testo di configurazione in un file CSV.


0

prova la funzione clean per i valori incasinati. Ad esempio = clean ("12345678901234567890"). Funziona per me per numeri, date, orari, ecc. Avvertirei che poiché questo non ha affatto lo scopo di questa funzione, ciò potrebbe smettere di funzionare con nuove versioni, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.