Come posso ottenere Excel per importare un file CSV con virgole in alcuni dei campi di contenuto?


13

Come posso ottenere Excel per importare il mio file CSV ?

File

Ho un file che afferma di essere CSV. Contiene 10 campi, tutti racchiusi tra virgolette (sì, anche le date e i numeri.) 2 o 3 di questi campi contengono virgole . Ma i dati in questi campi sono anche racchiusi tra virgolette.

Problema

Quando provo ad aprire questo file, Excel ignora completamente le virgolette e presuppone che facciano parte dei dati.

Quindi suddivide i campi contenenti virgole in più colonne.

Questo è male, almeno per me.

Dati di esempio

"20051", "", "30 settembre 2009 02:53:23", "SOMETEXT", "", "5000", "2000000", "2008 - 99999 - -99999, 2008 - unk - unk", "191 - SOMETEXT - SOMETEXT, 192 - SOMETEXT - SOMETEXT, 193 - SOMETEXT - SOMETEXT, 194 - SOMETEXT - SOMETEXT, 195 - SOMETEXT - SOMETEXT, 196 - SOMETEXT - SOMETEXT "," 45 - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT, 141 - SOMETEXT - SOMETEXT "
"20052", "SOMETEXT", "2009 set 08 07:56:50", "SOMETEXT", "", "50000", "5000000", "2007 - 99999 - 99999", "146 - SOMETEXT - SOMETEXT, 145 - SOMETEXT - SOMETEXT, 147 - SOMETEXT - SOMETEXT, 148 - SOMETEXT - SOMETEXT "," 103 - SOMETEXT - SOMETEXT, 1131 - SOMETEXT - SOMETEXT "

Che cosa ho provato?

Ho usato la funzione di importazione per specificare delimitatori e simili, ma questo non sembra aiutare.

Ho provato a cambiare "Delimitatore di testo" da una doppia virgoletta a "{none}" e viceversa. Questo sembra influenzare solo la prima colonna. Ciò sarebbe ridimensionabile se fosse possibile fare clic sulle altre colonne e applicare questa impostazione a ciascuna. Ma non è così e sembra che questo sia destinato a funzionare su più colonne.

Cos'altro posso provare?


1
Quale versione di Excel? Ed è completamente patchato?
harrymc,

L'ho visto nel 2002 e nel 2007. Non sono sicuro del 2007, ma sono abbastanza sicuro che il 2002 fosse completamente aggiornato
Rory Becker,

Potete fornire un collegamento al CSV? O una versione ridotta che dimostra il problema?
Josh Comley,

Aggiunti i dati di esempio sopra
Rory Becker,

Risposte:


13

Ho appena provato un test rapido che ha replicato il tuo problema.

Ho creato un CSV a 1 riga in Word (che utilizza virgolette intelligenti) come test.csv "123", "4,5,6" e si è aperto in Excel come descritto.

Prova a sostituire "e" con "


Avendo giocato con il tuo campione noto che a Excel non piacciono gli spazi tra i campi

ad es. invece di

"20051", "", "2009 Sep 30 02:53:23", ...

tu vuoi

"20051","","2009 Sep 30 02:53:23",...

una sostituzione di espressione regolare decente dovrebbe essere in grado di gestirlo con

Find:    |("[^"]*",) |
Replace: |\1|

(caratteri di pipe solo per segnali visivi)

O semplicemente modificare il codice .Net se si ha accesso ad esso ;-)

Inoltre, come ha sottolineato Arjan , potrebbe essere necessario convertire il file da UTF-8 in ANSI per evitare che la cella A1 contenga la distinta componenti e i relativi qoutes circostanti.

Mi sono imbattuto nel Catch 22 del CSV con codifica ANSI che non gestisce i caratteri internazionali e che il CSV con codifica UTF non è gestito correttamente da Excel; e non ho trovato una soluzione durante la manutenzione del CSV. Se è richiesto il supporto di caratteri internazionali, i formati XML (o XLS nativi) sembrano l'unica strada da percorrere, a costo della semplicità.


Nessun preventivo intelligente coinvolto. Questo file è stato generato per utilizzare virgolette standard da un programma scritto in .Net.
Rory Becker,

Non intendevo dire che i file UTF-8 dovrebbero essere codificati in modo diverso. Ma quando si importa UTF-8, in effetti si deve dire a Excel qual è la codifica. E UTF-8 è nascosto da qualche parte in basso in quel lungo elenco di codifiche.
Arjan,

Ho importato molti file CSV codificati UTF-8. Sono sicuro che se avessero avuto una DBA.
Arjan,

@lumbarious: Sei una STELLA! Funziona perfettamente ... Non riesco a credere che Excel non possa farcela :(
Rory Becker,

1
Sì, apparentemente gli spazi tra i campi confondono completamente Excel 2011. La rimozione degli spazi risolve il problema e impedisce a Excel di includere le virgolette come parte dei dati. Suppongo che ci sia una specifica da qualche parte che afferma che le virgolette doppie delimitano i dati solo se sono direttamente adiacenti alla virgola.
Peter Gluck,

9

Questo problema mi affligge da diversi anni. Ho appena scoperto la soluzione ed è accennato nelle risposte sopra ma non esplicitamente spiegato.

È lo spazio dopo la virgola!

Questo non importa in Excel;

HEADER1, HEADER2
"1,000", "2,000"

Mentre

HEADER1,HEADER2
"1,000","2,000"

Lavori!


3
Benvenuto in Super User! Questa risposta è stata scritta in modo utile e chiaro. Grazie per il tuo contributo e speriamo che tu rimanga.
user1717828

YAAAS! La risposta accettata ha la vera risposta alla domanda sepolta a differenza di questa risposta. L'operazione non utilizza le virgolette intelligenti.
Dardub,


2

Quando provo ad aprire questo file, Excel ignora completamente le virgolette e presuppone che facciano parte dei dati. Quindi suddivide i campi contenenti virgole in più colonne.

Se non stai usando accidentalmente virgolette intelligenti come suggerito da Lombarius e supponendo che tu sia su Windows: ciò potrebbe essere dovuto alle tue impostazioni regionali. Quando si fa doppio clic o si utilizza File »Apri, Excel non richiede alcun dettaglio, ma utilizza semplicemente queste impostazioni.

Tuttavia, il richiamo manuale della funzione di importazione (come hai fatto tu) avrebbe dovuto funzionare, quindi dubito che cambiare le impostazioni regionali aiuterà ...


Sembra più un commento piuttosto che una risposta ...
Metafaniel,

Questo suggerimento ha risolto esattamente il mio problema! Fare un'importazione CSV (Dati> Da testo / CSV) non funzionava come previsto, ma se ho appena fatto File> Apri sul file CSV, ha funzionato. Quindi sono stato in grado di copiare / incollare l'intera tabella nell'altra cartella di lavoro.
WOUNDEDStevenJones,

1

Hai controllato la codifica dei caratteri del tuo file? Prova a impostare la codifica dei caratteri su UTF-8.

Puoi usare notepad2 per cambiare la codifica dei caratteri.


La codifica è riportata da Notepad2 come "UTF8 con firma"
Rory Becker,

Quindi, durante l'importazione, è necessario scorrere verso il basso nell'elenco di codifica. UTF-8 è nascosto da qualche parte in basso nell'elenco. (Non è necessario utilizzare i file CSV codificati UTF-8, ma poiché il tuo input è già UTF-8, devi effettivamente dire a Excel cosa si deve usare. Nota che un normale carattere di virgolette verrebbe codificato lo stesso in ASCII, Western e UTF -8, ma forse la firma (un segno di ordine di byte) o alcuni altri personaggi fanno un casino?)
Arjan

@Peter Perché cambiare il link ufficiale a Wikipedia? Non ha affatto senso? Non vogliamo mandare persone in giro troppo, e questo certamente non merita una modifica, specialmente su un post di due anni.
slhck,

1

Basta aggiungere alle risposte qui: concentrarsi sugli SPAZI dopo le COMUNI nei file CSV. Ad Excel non piacciono questi se hai citato campi nei tuoi dati.

Mi piace di Excel (4 colonne di dati):

a, b, c, d

Ma non mi piace (3 colonne di dati):

a, "b, c", d

Gli piace (3 colonne di dati):

a,"b, c",d

Ho appena colpito quel problema. Stavo sbattendo la testa contro il muro fino a quando non sono arrivato a questa nota. Questo è semplicemente fantastico. Sto eseguendo Excel 2017 e quella stupidità esiste ancora ...
Albert Godfrind

1

Ho riscontrato questo problema oggi e ho anche trovato una soluzione che ha funzionato per me.

Il mio ambiente / contesto: ho una pagina web con alcune domande (modulo) che contengono sia virgolette doppie che virgole. Sia le domande che le risposte vengono estratte dal database e scritte in un file Excel a scopo di reportistica.

Ho avuto lo stesso problema descritto sopra: le domande che includevano sia virgolette doppie che virgole venivano suddivise in più colonne in Excel.

Per i miei scopi, usare due virgolette singole al posto di una doppia virgoletta ha funzionato.

-> sul sito Web, due virgolette singole sembrano una doppia citazione per i visitatori del sito

-> Nel file Excel, di nuovo, due virgolette singole sembrano una doppia virgoletta per gli utenti che visualizzano i dati del rapporto

Mi rendo conto che questa soluzione non funzionerà per tutti, ma spero che possa aiutare qualcuno.


1

Sono stato in grado di farlo usando:

a,b,c,"=""(1,2,3)"""

che dà quattro colonne:

|  a  |   b   |   c   |   (1,2,3)   |

0

Un altro modo di farlo:

  1. Apri il file in LibreOffice o OpenOffice Calc.
  2. Imposta le opzioni di importazione corrette, come UTF-8, separate da virgola, ...
  3. Memorizza il file come ods o xls
  4. Apri il nuovo file in Excel.

In questo modo, puoi impostare la codifica corretta come UTF-8, che molte (tutte?) Versioni di Excel non possono gestire correttamente senza BOM e non devi preoccuparti di una regex che potrebbe sostituire del testo all'interno del campo e non lo noti.

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.