2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99

Jak uzyskać Excel do interpretacji przecinka jako domyślnego delimitera w plikach CSV?

Mam kilka plików .csv. Niektóre z nich są odgraniczone przecinkami, niektóre są odgraniczone zakładkami (może powinny być nazywane .tsv …)

Rozszerzenie csv wiąże się z Excel'em, gdy Excel jest zainstalowany. Jeśli jednak otworzę jeden z tych plików w Excelu, wszystko zostanie zrzucone do tej samej kolumny, a przecinek nie zostanie zinterpretowany jako delimiter.

Mogę zamiast pliku -> Import…, wybrać plik i wybrać dokładny sposób interpretacji zawartości (delimitery, typy danych, itp.) Ale większość czasu chcę tylko look przy pliku poprzez przejrzysty widok tabeli. Nie chcę go przetwarzać w Excelu.

Czy istnieje sposób na to, aby Excel automatycznie zinterpretował delimiter i pokazał plik CSV jako właściwą tabelę, gdy tylko zostanie on otwarty? Potrzebuję tego, aby móc używać Excela jako szybkiej przeglądarki takich plików.

Podejrzewam, że musi być jakiś sposób, inaczej Excel nie skojarzyłby się z plikami CSV.

Odpowiedzi (9)

100
100
100
2013-12-10 14:38:58 +0000

Jeśli nie chcesz modyfikować formatu pliku i jesteś skierowany wyłącznie do Excela, możesz użyć następującej sztuczki Excela, aby pomóc.

Dodaj nową linię na górze pliku z tekstem "sep=," (łącznie z cytatami), aby program Excel otworzył plik z “,” jako separatorem listy.

To bardzo prosta sztuczka, aby uniknąć zmiany ustawień regionalnych Windows i uzyskać spójny wynik. Ale to jest specyficzne dla programu Excel.

85
85
85
2013-06-11 11:07:17 +0000

Podczas otwierania plików CSV, program Excel będzie używał systemowego ustawienia regionalnego o nazwie List separator w celu określenia domyślnego separatora, którego należy użyć.

Microsoft Excel będzie otwierał pliki .csv, ale w zależności od ustawień regionalnych systemu, może oczekiwać średnika jako separatora zamiast przecinka, ponieważ w niektórych językach przecinek jest używany jako separator dziesiętny. (z Wikipedia )

  • *

On Windows , możesz zmienić ustawienie List separator w Regional and Language Options jak określono na Office support website :

Change the separator in a CSV text file

  1. Kliknij menu Start systemu Windows.
  2. Kliknij przycisk Panel sterowania.
  3. Otwórz okno dialogowe Opcje regionalne i językowe.
  4. Kliknąć kartę Opcje regionalne.
  5. Kliknij Customize / Additional settings (Win10).
  6. Wpisz nowy separator w polu Separator listy.
  7. Kliknij dwukrotnie OK.
  • *

Uwaga : działa to tylko wtedy, gdy symbol dziesiętny nie jest oznaczony przecinkiem (zgodnie z cytatem z Wikipedii powyżej). Jeśli tak jest, to Excel będzie nie używał przecinka jako separatora listy, nawet jeśli zostanie wybrany. Dla wielu nie-United States regions, przecinek jest domyślnym symbolem dziesiętnym.

W Mac OS X , to ustawienie wydaje się być wydedukowane z ustawienia decimal separator (w panelu Język & Region w _ Preferencjach Systemu, przejdź do _Advanced). Jeśli separator decimal jest punktem, to domyślnym separatorem CSV będzie przecinek, ale jeśli separator decimal jest przecinkiem, to domyślnym separatorem CSV będzie średnik.

Jak sam powiedziałeś w komentarzu, istnieje alternatywa dla użytkowników komputerów Mac, aby szybko przeglądać te pliki CSV. Jest to wtyczka do Quick Look o nazwie quicklook-csv , która obsługuje funkcję wykrywania separatora.

11
11
11
2017-06-02 12:27:39 +0000

Nie potrzebujesz cudzysłowów wokół sep=, - tak długo, jak jest to pierwszy wiersz pliku to będzie działać, przynajmniej z Excel 2016.

Odkryłem, że jeśli plik jest określony w zakładce, sep=\t działa dobrze, z i bez cudzysłowów.

5
5
5
2018-07-21 11:55:56 +0000
1
1
1
2019-09-23 12:03:13 +0000

Miałem plik .csv z separatorem ; i ustawieniami regionalnymi ustawionymi na List separator ;. Jednak Excel nadal nie przetworzył kolumn.

Okazało się, że jest to problem z kodowaniem. Pliki zostały wyeksportowane z SQL Server Management Studio 2005 i zostały zakodowane w UCS-2 LE BOM. Za pomocą Notatnika ++ przełączyłem kodowanie na UTF-8 i wszystko zaczęło działać.

1
1
1
2018-06-25 14:46:53 +0000

Gdy separatorem w ustawieniach regionalnych nie jest przecinek, lecz średnik (separator holenderski), należy zmienić nazwę pliku CSV na plik TXT. Kliknąć prawym przyciskiem myszy na plik TXT i wybrać “Open with” i wybrać “Excel”. W programie Excel wybierz pierwszą kolumnę, wybierz dane na wstążce i oddziel tekst od kolumn.

LUB

Zainstaluj LibreOffice i otwórz plik CSV za pomocą LibreOffice Calc.

0
0
0
2018-01-22 13:50:36 +0000

W przypadku języka niderlandzkiego miałem problem z tym, że Excel 2008 na Windows 7 nie spełniał wymagań RFC4180:

“Pola zawierające przerwy w wierszach (CRLF), cudzysłowy i przecinki powinny być dołączone w cudzysłowach”

Plik oddzielony przecinkiem prawidłowo zawierał pola z przecinkiem (holenderski separator dziesiętny) dołączone w cudzysłowach. W locale holenderskim separatorem dziesiętnym jest ,, a separatorem listy jest ;, więc Excel nie mógł odczytać pliku z , użytym dla obu (nawet po wyraźnej zmianie separatora listy na , w Panelu sterowania).

Wejście wygląda jak:

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

Rozwiązanie zostało podane przez @user280725:

Use Notepad to insert as a first line:

sep=,

(Oznacza to, że uwaga użytkownika @zakinster w jego rozwiązaniu nie musi już być stosowana. )


Ciekawe: z wciąż załadowanym plikiem csv, jeśli teraz ustawisz locale na US English w Control Panel i zapiszesz plik, zostanie on skonwertowany do formatu US English (przecinek jako separator listy i kropka jako separator dziesiętny).

0
0
0
2017-06-12 17:22:25 +0000

Należy sprawdzić plik CSV w prostym edytorze, takim jak Notatnik, aby sprawdzić, czy jest poprawnie sformatowany.

Dodałem tę odpowiedź po rozwiązaniu głupiego błędu, w którym pliki CSV utworzone przeze mnie za pomocą VB nie były otwierane z osobnymi kolumnami w Excelu. Odkryłem, że sposób, w jaki napisałem linie, zawijał każdą z nich w cudzysłowy. Excel ukrył cudzysłowy i pokazał całą linię w kolumnie A, sprawiając, że wyglądała ona tak, jakby ignorowała moje separatory przecinków.

0
0
0
2017-07-31 06:30:51 +0000

najlepszym sposobem będzie zapisanie go w pliku tekstowym z rozszerzeniem 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:\" & 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