Bagaimana cara mendapatkan Excel untuk menafsirkan koma sebagai pembatas default dalam file CSV?

95

Saya memiliki sejumlah file .csv. Beberapa dari mereka dibatasi koma, beberapa dibatasi tab (mungkin mereka harus dipanggil .tsv ...)

The csvekstensi akan terkait dengan Excel ketika Excel diinstal. Namun, jika saya membuka salah satu file ini dengan excel, semuanya akan dibuang ke kolom yang sama dan koma tidak diartikan sebagai pembatas.

Saya dapat bukannya File -> Impor ..., pilih file, dan pilih cara yang tepat untuk menafsirkan konten (pembatas, tipe data, dll.) Tapi sebagian besar waktu saya hanya ingin melihat file melalui jelas tampilan tabel. Saya tidak ingin memprosesnya dengan Excel.

Apakah ada cara untuk membuat Excel menginterpretasikan pembatas secara otomatis dan memperlihatkan file CSV sebagai tabel yang tepat segera setelah dibuka? Saya membutuhkan ini sehingga saya dapat menggunakan Excel sebagai penampil cepat untuk file-file tersebut.

Saya curiga pasti ada cara, jika tidak, Excel tidak akan mengaitkan dirinya dengan file CSV.

Szabolcs
sumber
Saya benar-benar mengerti bahwa jawaban yang dipilih menjawab pertanyaan Anda, tetapi yang kedua harus disorot karena menawarkan solusi global, yang berfungsi berbagi acros melalui email, jaringan, dll.
Rafareino

Jawaban:

81

Saat membuka file CSV, Excel akan menggunakan pengaturan sistem regional yang dipanggil List separatoruntuk menentukan pembatas default yang digunakan.

Microsoft Excel akan membuka file .csv, tetapi tergantung pada pengaturan regional sistem, ia mungkin mengharapkan titik koma sebagai pemisah alih-alih koma, karena dalam beberapa bahasa koma digunakan sebagai pemisah desimal. (dari Wikipedia )


Di Windows , Anda dapat mengubah List separatorpengaturan Regional and Language Optionsseperti yang ditentukan di situs web dukungan Office :

Ubah pemisah dalam file teks CSV

  1. Klik menu Start Windows.
  2. Klik Panel Kontrol.
  3. Buka kotak dialog Opsi Regional dan Bahasa.
  4. Klik Tab Opsi Regional.
  5. Klik Kustomisasi / Pengaturan tambahan (Win10).
  6. Ketik pemisah baru di kotak Daftar pemisah.
  7. Klik OK dua kali.

Catatan : ini hanya berfungsi jika simbol Desimal tidak juga ditetapkan sebagai koma (sesuai dengan kutipan Wikipedia di atas). Jika ya, Excel tidak akan menggunakan koma sebagai pemisah Daftar, bahkan jika dipilih. Untuk banyak wilayah non-Amerika Serikat, koma adalah simbol Desimal default.

Pada Mac OS X , pengaturan ini tampaknya akan disimpulkan dari pemisah desimal pengaturan (dalam Bahasa & Daerah panel dari System Preferences , pergi ke Lanjutan ). Jika Pemisah Desimal adalah sebuah titik maka pemisah CSV default akan menjadi koma, tetapi jika Pemisah Desimal adalah koma, maka pemisah CSV default akan menjadi titik koma.

Seperti yang Anda katakan di komentar, ada alternatif bagi pengguna Mac untuk melihat file CSV dengan cepat. Ini plugin untuk Quick Look yang disebut quicklook-csv yang menangani deteksi separator.

zakinster
sumber
Terima kasih, ini masuk akal. Saya kira itu tidak akan menafsirkan tab sebagai pembatas secara default (yang juga masuk akal karena CSV singkatan dari Comma Separated Values, tetapi orang-orang menggunakan tab dalam CSVs dalam praktiknya dan saya perlu menghadapinya).
Szabolcs
@Szabolcs Excel tidak akan mencoba mendeteksi pembatas saat membuka file CSV (menggunakan file-> open atau explorer ), itu hanya akan menggunakan pengaturan sistem. Namun ia akan berhasil mendeteksi pembatas (tab, koma, titik koma, atau spasi) secara otomatis saat menggunakan fitur impor .
zakinster
1
Jawaban Anda juga berlaku pada OS X: itu masih koma / koma yang menyebabkan "masalah" (seperti yang Anda sebutkan dalam jawaban).
Szabolcs
1
Sunting nanti: permintaan maaf! ini TIDAK bekerja! Rupanya seseorang perlu me-restart program dan / atau log-out / -in lagi untuk menerapkan perubahan. Saya tidak tahu persis kapan, tetapi beberapa saat setelah perubahan saya tiba-tiba ini berhasil.
mmo
1
Di Mac OS X, jangan lupa untuk QUIT Excel setelah melakukan perubahan. Excel tetap terbuka jika Anda hanya menutup semua lembar yang terbuka. Klik Excel> Keluar Excel atau cukup tekan Command + Q dan Anda selesai.
Paulo Pedroso
94

Jika Anda tidak ingin mengubah format file, dan HANYA menargetkan Excel, Anda dapat menggunakan trik Excel berikut untuk membantu Anda.

Tambahkan baris baru di bagian atas file dengan teks "sep=,"(termasuk tanda kutip) agar Excel membuka file dengan "," sebagai pemisah daftar.

Ini adalah trik yang sangat mudah untuk menghindari mengubah pengaturan regional Windows Anda dan mendapatkan hasil yang konsisten. Tapi itu spesifik Excel.

pengguna280725
sumber
1
Pastikan untuk hanya menggunakan ini untuk melihat file, dan tidak memodifikasinya, jika tidak, Anda dapat mengalami salah satu masalah berikut: theonemanitdepartment.wordpress.com/2014/12/15/…
Wouter
Lebih baik lagi jika Anda perlu mendistribusikan file ini ke orang lain, jadi pastikan excel akan dapat memahami file tersebut, apa pun konfigurasinya. Saya selalu menggunakan csv untuk dapat menggunakan sistem kontrol versi apa pun untuk berbagi dan berkolaborasi pada file-file ini, tetapi telah berjuang dengan koma vs titik koma, dan selalu membujuk semua orang untuk mengubah konfigurasi mereka, tidak lagi. Terima kasih banyak!
Rafareino
1
Sendiri di atas apa?
NateS
11

Anda tidak perlu tanda kutip di sekitar sep=,- selama itu adalah baris pertama dari file itu akan berfungsi, setidaknya dengan Excel 2016.

Saya menemukan bahwa jika file dibatasi tab, sep=\tberfungsi dengan baik, dengan dan tanpa tanda kutip.

Stephen Hemingway
sumber
4

Jawaban yang diterima benar tetapi saya adalah orang yang visual. Berikut adalah setiap langkah dalam format tangkapan layar tentang cara melakukan ini di windows 10.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Sam B
sumber
2
Sangat berguna! Ingat saja (seperti yang telah disebutkan di atas) yang List separatorakan diabaikan jika simbol yang sama digunakan untuk Decimal symbol. Anda akan sering menemukan ,sebagai simbol desimal, jadi pastikan untuk mengubahnya ke sesuatu yang lain (misalnya .) saat mengatur List separatorke ,.
Dirk
1

Ketika pemisah dalam pengaturan regional bukan koma tetapi tanda koma (pemisah Belanda), ganti nama file CSV ke file TXT. Klik kanan file TXT dan pilih "Buka dengan" dan pilih "Excel". Di Excel pilih kolom pertama, pilih data di pita dan pisahkan teks ke kolom.

ATAU

Instal LibreOffice dan buka file CSV dengan LibreOffice Calc.

Eric VDB
sumber
1

Saya memiliki .csvfile dengan ;pengaturan pemisah dan regional yang diatur ke Daftar pemisah ;. Namun Excel masih tidak mem-parsing kolom.

masukkan deskripsi gambar di sini

Ternyata menjadi masalah penyandian. File diekspor dari SQL server Management Studio 2005 dan dikodekan pada UCS-2 LE BOM. Menggunakan Notepad ++ saya beralih encoding UTF-8dan semuanya mulai bekerja.

Ogglas
sumber
0

Pastikan untuk memeriksa file CSV dalam editor sederhana seperti Notepad untuk memverifikasinya diformat dengan benar.

Saya menambahkan jawaban ini setelah saya menyelesaikan bug bodoh di mana file CSV yang saya buat dengan VB tidak dibuka dengan kolom terpisah di Excel. Saya menemukan bahwa cara saya menulis garis membungkus setiap baris dengan tanda kutip. Excel menyembunyikan tanda kutip dan menunjukkan seluruh baris di kolom A, membuatnya tampak seolah mengabaikan pemisah koma saya.

edj
sumber
0

Cara terbaik adalah menyimpannya dalam file teks dengan ekstensi 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
Aziz
sumber
0

Untuk bahasa Belanda, saya mengalami masalah karena Excel 2008 pada Windows 7 tidak mematuhi RFC4180:

"Kolom yang berisi penghentian baris (CRLF), tanda kutip ganda, dan koma harus diapit tanda kutip ganda."

File yang dipisahkan koma dengan benar memiliki bidang dengan koma (pemisah desimal Belanda) terlampir dalam tanda kutip ganda. Di lokal Belanda pemisah desimal adalah ,dan pemisah daftar ;sehingga Excel tidak dapat membaca file yang ,digunakan untuk keduanya (bahkan setelah secara eksplisit mengubah pemisah daftar menjadi ,di Control Panel).

Inputnya seperti:

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

Solusi ini diberikan oleh @ user280725:

Gunakan Notepad untuk menyisipkan sebagai baris pertama:

sep=,

(Ini berarti Catatan pengguna @ zakinster dalam solusinya tidak perlu lagi diterapkan.)


Menarik: dengan file csv masih dimuat, jika sekarang Anda mengatur lokal ke Bahasa Inggris AS di Panel Kontrol dan menyimpan file, itu akan dikonversi ke format Bahasa Inggris AS (koma sebagai pemisah daftar dan titik sebagai pemisah desimal).

Paul Ogilvie
sumber