Come fare in modo che Excel interpreti la virgola come delimitatore predefinito nei file CSV?


92

Ho un numero di file .csv. Alcuni sono delimitati da virgole, altri delimitati da tabulazioni (forse dovrebbero essere chiamati .tsv ...)

L' csvestensione viene associata a Excel quando Excel è installato. Tuttavia, se apro uno di questi file con Excel, tutto viene scaricato nella stessa colonna e la virgola non viene interpretata come delimitatore.

Posso invece File -> Importa ..., selezionare il file e scegliere il modo preciso di interpretare il contenuto (delimitatori, tipi di dati, ecc.) Ma il più delle volte voglio solo guardare il file attraverso un chiaro vista tabella. Non voglio elaborarlo con Excel.

C'è un modo per ottenere Excel per interpretare automaticamente il delimitatore e mostrare il file CSV come una tabella corretta non appena viene aperto? Ne ho bisogno per poter utilizzare Excel come visualizzatore rapido per tali file.

Sospetto che ci debba essere un modo, altrimenti Excel non si associerebbe ai file CSV.


Capisco davvero che la risposta scelta risponde alla tua domanda, ma la seconda dovrebbe essere evidenziata perché offre una soluzione globale, che funziona con la condivisione di e-mail, rete, ecc.
Rafareino,

Risposte:


78

Durante l'apertura dei file CSV, Excel utilizzerà un'impostazione internazionale di sistema chiamata List separatorper determinare quale delimitatore predefinito utilizzare.

Microsoft Excel aprirà i file .csv, ma a seconda delle impostazioni internazionali del sistema, potrebbe aspettarsi un punto e virgola come separatore anziché una virgola, poiché in alcune lingue la virgola viene utilizzata come separatore decimale. (da Wikipedia )


Su Windows , è possibile modificare l' List separatorimpostazione Regional and Language Optionscome specificato nel sito Web del supporto di Office :

Cambia il separatore in un file di testo CSV

  1. Fai clic sul menu Start di Windows.
  2. Fai clic su Pannello di controllo.
  3. Apri la finestra di dialogo Opzioni internazionali e della lingua.
  4. Fai clic sulla scheda Opzioni internazionali.
  5. Fare clic su Personalizza / Impostazioni aggiuntive (Win10).
  6. Digitare un nuovo separatore nella casella Separatore elenco.
  7. Fare clic su OK due volte.

Nota : questo funziona solo se il simbolo decimale non è designato anche come virgola (in linea con la citazione di Wikipedia sopra). In tal caso, Excel non utilizzerà la virgola come separatore dell'elenco, anche se scelto. Per molte regioni non statunitensi, la virgola è il simbolo decimale predefinito.

Su Mac OS X , questa impostazione sembra essere dedotta dall'impostazione del separatore decimale (nel riquadro Lingua e area delle Preferenze di Sistema , vai su Avanzate ). Se il separatore decimale è un punto, il separatore CSV predefinito sarà una virgola, ma se il separatore decimale è una virgola, il separatore CSV predefinito sarà un punto e virgola.

Come hai detto tu stesso nel commento, c'è un'alternativa per gli utenti Mac per guardare rapidamente quei file CSV. È un plug-in per Quick Look chiamato quicklook-csv che gestisce il rilevamento dei separatori.


Grazie, questo ha senso. Immagino quindi che non interpreterà le schede come delimitatori per impostazione predefinita (il che ha anche senso poiché CSV sta per valori separati da virgola, ma le persone usano le schede in CSV in pratica e devo occuparmene).
Szabolcs,

@Szabolcs Excel non tenterà di rilevare il delimitatore durante l'apertura di un file CSV (utilizzando file-> apri o l' esploratore ), utilizzerà semplicemente l'impostazione di sistema. Riuscirà comunque a rilevare automaticamente il delimitatore (tabulazione, virgola, punto e virgola o spazio) durante l'utilizzo della funzione di importazione .
zakinster,

1
La tua risposta era valida anche su OS X: è ancora il punto decimale / virgola che causa il "problema" (come menzionato nella risposta).
Szabolcs,

1
Modifica successiva: scuse! questo funziona! Apparentemente è necessario riavviare il programma e / o disconnettersi / -in di nuovo per applicare la modifica. Non so esattamente quando, ma poco dopo il mio cambiamento all'improvviso ha funzionato.
mmo,

1
Su Mac OS X, non dimenticare di uscire da Excel dopo aver apportato le modifiche. Excel rimane aperto se chiudi solo tutti i fogli aperti. Fai clic su Excel> Esci da Excel o premi semplicemente Command + Q e il gioco è fatto.
Paulo Pedroso,

90

Se non stai cercando di modificare il formato del file e scegli SOLO come target Excel, puoi utilizzare il seguente trucco di Excel per aiutarti.

Aggiungi una nuova riga nella parte superiore del file con il testo "sep=,"(comprese le virgolette) in modo che Excel possa aprire il file con "," come separatore di elenco.

È un trucco molto semplice per evitare di modificare le impostazioni internazionali di Windows e ottenere un risultato coerente. Ma è specifico di Excel.


1
Assicurati di -utilizzarlo solo per -look- sul file e non modificarlo, altrimenti potresti imbatterti in uno dei seguenti problemi: theonemanitdepartment.wordpress.com/2014/12/12/15/…
Wouter

Ancora meglio se hai bisogno di ridistribuire questo file ad altri, quindi assicurati che Excel sia in grado di capire il file, indipendentemente dalle loro configurazioni. Uso sempre CSV per essere in grado di utilizzare qualsiasi sistema di controllo della versione per condividere e collaborare su questi file, ma ho lottato con virgola vs punto e virgola e ho sempre cercato di modificare il numero di configurazioni, non di più. Molte grazie!
Rafareino,

Solo su cosa?
NateS,

10

Non hai bisogno delle virgolette intorno al sep=,- fintanto che è la prima riga del file funzionerà, almeno con Excel 2016.

Ho scoperto che se il file è delimitato da tabulazioni, sep=\tfunziona bene, con e senza virgolette.


4

La risposta accettata è corretta ma sono una persona visiva. Ecco ogni singolo passaggio in formato screenshot di come eseguire questa operazione in Windows 10.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


2
Molto utile! Basta ricordare (come già menzionato da qualche parte sopra) che List separatorverrà ignorato se si utilizza lo stesso simbolo Decimal symbol. Troverai spesso un ,simbolo decimale, quindi assicurati di cambiarlo in qualcos'altro (ad es. .) Quando imposti List separatorsu ,.
Dirk,

1

Quando il separatore nelle impostazioni internazionali non è una virgola ma un punto e virgola (separatore olandese), rinominare il file CSV in un file TXT. Fare clic con il tasto destro del mouse sul file TXT e selezionare "Apri con" e selezionare "Excel". In Excel selezionare la prima colonna, selezionare i dati nella barra multifunzione e separare il testo in colonne.

O

Installa LibreOffice e apri il file CSV con LibreOffice Calc.


0

Assicurati di ispezionare il file CSV in un semplice editor come Blocco note per verificare che sia formattato correttamente.

Ho aggiunto questa risposta dopo aver risolto uno stupido bug in cui i file CSV creati con VB non erano aperti con colonne separate in Excel. Ho scoperto che il modo in cui avevo scritto le righe racchiudeva ogni riga tra virgolette. Excel nascose le virgolette e mostrò l'intera riga nella colonna A, facendola apparire come se ignorasse i miei separatori di virgola.


0

il modo migliore sarà salvarlo in un file di testo con estensione csv

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name  As String

    Dim pathfile As String


    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\1\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub

0

Per l'olandese ho avuto un problema che Excel 2008 su Windows 7 non aderiva a RFC4180:

"I campi che contengono interruzioni di riga (CRLF), virgolette doppie e virgole devono essere racchiusi tra virgolette doppie."

Un file separato da virgole aveva correttamente i campi con una virgola (separatore decimale olandese) racchiusa tra virgolette doppie. Nelle impostazioni locali olandesi il separatore decimale è ,e il separatore elenco è ;quindi Excel non è stato in grado di leggere un file ,utilizzato per entrambi (nemmeno dopo aver modificato esplicitamente il separatore elenco ,in Pannello di controllo).

L'input è simile a:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

La soluzione è stata fornita da @ user280725:

Utilizzare Blocco note per inserire come prima riga:

sep=,

(Ciò significa che non è più necessario applicare la nota dell'utente @zakinster nella sua soluzione.)


Interessante: con il file CSV ancora caricato, se ora si imposta la locale sull'inglese americano nel Pannello di controllo e si salva il file, sarà convertito nel formato inglese americano (virgola come separatore di elenco e punto come separatore decimale).

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.