Excel'in virgülün CSV dosyalarında varsayılan sınırlayıcı olarak yorumlanmasını nasıl sağlayabilirim?


95

Çok sayıda .csv dosyam var. Bazıları virgülle ayrılmış, bazıları sekmeyle ayrılmış (belki .tsv ... olarak adlandırılmalıdır)

csvExcel yüklü olduğunda uzatma Excel ile ilişkili alır. Ancak, bu dosyalardan birini excel ile açarsam, her şey aynı sütuna atılır ve virgül sınırlayıcı olarak yorumlanmaz.

Bunun yerine Dosya olabilir -> Al ..., dosyayı seçin ve içeriğini (ayraçları, veri tipleri, vb) Ama yorumlamak kesin yolu seçmek Sadece istediğiniz çoğu zaman bakmak net aracılığıyla dosyaya tablo görünümü. Excel ile işlemek istemiyorum.

Excel'in sınırlayıcıyı otomatik olarak yorumlaması ve CSV dosyasını açtıktan hemen sonra uygun bir tablo olarak göstermesinin bir yolu var mı? Buna ihtiyacım var, böylece Excel'i bu tür dosyalar için hızlı görüntüleyici olarak kullanabilirim.

Bunun bir yolu olması gerektiğinden şüpheleniyorum, aksi takdirde Excel kendini CSV dosyalarıyla ilişkilendirmez.


Gerçekten seçilmiş tepki sorunuza cevap anlıyorum, ama vb e-posta, ağ, göre paylaşım acros çalışan bir küresel çözüm sunuyoruz çünkü ikincisi vurgulanmalıdır
Rafareino

Yanıtlar:


81

CSV dosyalarını açarken, Excel List separatorhangi varsayılan sınırlayıcının kullanılacağını belirlemek için çağrılan bölgesel bir ayar kullanır.

Microsoft Excel, .csv dosyalarını açacaktır, ancak sistemin bölgesel ayarlarına bağlı olarak, bazı dillerde virgülün ondalık ayırıcı olarak kullanıldığı için virgül yerine ayırıcı olarak noktalı virgül bekleyebilir. ( Wikipedia'dan )


On Windows'un , değiştirebileceğiniz List separatorayarı Regional and Language Optionsüzerinde belirtildiği şekilde Büro destek web :

CSV metin dosyasındaki ayırıcıyı değiştirme

  1. Windows Başlat menüsünü tıklayın.
  2. Denetim Masası'nı tıklayın.
  3. Bölge ve Dil Seçenekleri iletişim kutusunu açın.
  4. Bölgesel Seçenekler Sekmesini tıklayın.
  5. Özelleştir / Ek ayarlar (Win10) seçeneğini tıklayın.
  6. Liste ayırıcı kutusuna yeni bir ayırıcı yazın.
  7. İki kez Tamam'ı tıklayın.

Not : Bu yalnızca Ondalık simgesi de virgül olarak belirlenmemişse çalışır (yukarıdaki Wikipedia alıntılarına göre). Eğer öyleyse, Excel olacak değil seçilmiş olsa bile, Liste ayırmalarda virgül kullanacaktır. Amerika Birleşik Devletleri dışındaki birçok bölge için virgül, varsayılan Ondalık semboldür.

On Mac OS X bu ayar çıkarılabilir gibi görünüyor ondalık ayırıcı ayarında (içinde Dil ve Bölge ait bölmede Sistem Tercihleri gidin Gelişmiş ). Eğer Ondalık Ayırıcı bir noktadır varsayılan CSV ayırıcı virgül olacak, ama eğer Ondalık Ayırıcı virgül, sonra varsayılan CSV ayırıcı bir noktalı virgül olacak.

Yorumda kendinizin de söylediği gibi, Mac kullanıcılarının bu CSV dosyalarına hızlı bir şekilde bakmaları için bir alternatif var. Quick Look için Quicklook-csv adı verilen ve ayırıcı algılamayı yöneten eklentidir .


Teşekkürler, bu mantıklı. O zaman sanırım sekmeleri varsayılan olarak sınırlayıcılar olarak yorumlamayacak (CSV'nin Virgülle Ayrılmış Değerler anlamına gelmesi de mantıklı geliyor, ancak insanlar CSV'lerde pratikte sekmeleri kullanıyorlar ve bununla başa çıkmam gerekiyor).
Szabolcs

@Szabolcs Excel, bir CSV dosyasını açarken ( file-> open veya explorer kullanarak) sınırlayıcıyı algılamaya çalışmaz, sadece sistem ayarını kullanır. Ancak, içe aktarma özelliğini kullanırken sınırlayıcıyı (sekme, virgül, noktalı virgül veya boşluk) otomatik olarak algılamayı yönetir .
zakinster

1
Cevabınız OS X'te de geçerliydi: hala "soruna" neden olan ondalık sayı / virgül (cevabında bahsettiğiniz gibi).
Szabolcs

1
Daha sonra düzenleyin: özür dilerim! bu işe yarıyor! Görünüşe göre, programı yeniden başlatmak ve / veya değişikliği uygulamak için tekrar oturumu kapatmak / -in gerekiyor. Tam olarak ne zaman bilmiyorum, ancak değişiklikten kısa bir süre sonra bu aniden işe yaradı.
mmo

1
Mac OS X'te, değişiklikleri yaptıktan sonra QUIT Excel'i unutmayın. Yalnızca tüm açık sayfaları kapatırsanız, Excel açık kalır. Excel> Excel'den Çık'ı tıklayın veya yalnızca Command + Q tuşlarına basın ve bitirdiniz.
Paulo Pedroso

94

Dosyanın biçimini değiştirmek istemiyorsanız ve SADECE Excel'i hedefliyorsanız, size yardımcı olmak için aşağıdaki Excel numarasını kullanabilirsiniz.

"sep=,"Excel'in dosyayı liste ayırıcı olarak "," ile açması için dosyanın üstüne (tırnaklar dahil) yeni bir satır ekleyin .

Windows bölgesel ayarlarınızı değiştirmekten kaçınmak ve tutarlı bir sonuç almak çok kolaydır. Ancak Excel'e özgüdür.


1
: Aksi aşağıdaki sorunlardan biri haline çalışabilir, dosyasına -look-, ve onu değiştirmeye almamak için bu kullanım -only- emin olun theonemanitdepartment.wordpress.com/2014/12/15/...
Wouter

Daha da iyisi, bu dosyayı başkalarına yeniden dağıtmanız gerekiyorsa, excel'in yapılandırmaları ne olursa olsun, dosyayı anlayabileceğinden emin olursunuz. Bu dosyaları paylaşmak ve işbirliği yapmak için herhangi bir sürüm kontrol sistemini kullanabilmek için her zaman csv'yi kullanıyorum, ancak virgül veya noktalı virgüllerle mücadele ettim ve her zaman artık yapılandırmalarını değiştirmek için herkesi kullanmaya başladım. Çok teşekkürler!
Rafareino 10:16

1
Neyin üstünde yalnız?
NateS

11

sep=,En azından Excel 2016 ile çalışacağı dosyanın ilk satırı olduğu sürece - ifadelerine ihtiyacınız yoktur .

Dosya sekmeyle ayrılmışsa, sep=\ttırnak işaretleri olmadan ve tırnak işaretleri olmadan iyi çalıştığını keşfettim .


4

Kabul edilen cevap doğru, ama ben görsel bir insanım. Windows 10'da bunun nasıl yapılacağı ekran görüntüsü formatında her adım.

görüntü tanımını buraya girin görüntü tanımını buraya girin görüntü tanımını buraya girin görüntü tanımını buraya girin görüntü tanımını buraya girin görüntü tanımını buraya girin


2
Çok kullanışlı! Sadece (yukarıda bir yerde bahsedildiği gibi) List separatoraynı sembol kullanılırsa göz ardı edileceğini unutmayın Decimal symbol. Sık sık bulacaksınız ,olarak ondalık sembolü, bu nedenle başka bir şey (örneğin olarak değiştirmek için emin olun .ayarlarken) List separatoriçin ,.
Dirk

1

Bölgesel ayarlardaki ayırıcı virgül değil noktalı virgül (Hollandalı ayırıcı) ise, CSV dosyasını bir TXT dosyasına yeniden adlandırın. TXT dosyasını sağ tıklayın ve "Birlikte Aç" ı seçin ve "Excel" i seçin. Excel'de ilk sütunu seçin, şeritteki verileri seçin ve metni sütuna ayırın.

VEYA

LibreOffice'i kurun ve CSV dosyasını LibreOffice Calc ile açın.


1

Ben vardı .csvayırıcı dosyayı ;ayırıcı Listeye ayarlanır ve bölgesel ayarlara ;. Ancak Excel hala sütunları ayrıştırmadı.

görüntü tanımını buraya girin

Kodlama sorunu olduğu ortaya çıktı. Dosyalar SQL server Management Studio 2005'ten ihraç edildi ve kodlandı UCS-2 LE BOM. Notepad ++ kullanarak kodlamaya geçtim UTF-8ve her şey çalışmaya başladı.


0

CSV dosyasını, düzgün biçimlendirildiğinden emin olmak için Notepad gibi basit bir düzenleyicide incelediğinizden emin olun.

Bu cevabı, VB ile oluşturduğum CSV dosyalarının Excel'de ayrı sütunlarla açılmadığı aptal bir hatayı çözdükten sonra ekledim. Satırları yazma biçimimin, her satırı tırnak işareti ile kapladığını keşfettim. Excel, tırnak işaretlerini sakladı ve tüm satırı A sütununda gösterdi, virgül ayırıcılarıma aldırmıyormuş gibi görünmesini sağladı.


0

csv uzantılı bir metin dosyasına kaydetmek için en iyi yol

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

Hollandaca için Windows 7'deki Excel 2008'in RFC4180'e uymadığı bir sorun vardı:

"Satır kesmeleri (CRLF), çift tırnak işaretleri ve virgüller içeren alanlar çift tırnak işaretleri içine alınmalıdır."

Virgülle ayrılmış bir dosyada, çift tırnak içine alınmış virgül (Hollandalı ondalık ayırıcı) bulunan alanlar doğru bir şekilde vardır. Hollanda yerel ayarında ondalık ayırıcı ,ve liste ayırıcısı ;Excel'in ,her ikisi için kullanılan bir dosyayı okuyamadı (liste ayırıcısını ,Denetim Masası'ndaki açıkça değiştirdikten sonra bile ).

Giriş gibi görünüyor:

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

Çözüm @ user280725 tarafından verildi:

İlk satır olarak eklemek için Not Defteri'ni kullanın:

sep=,

(Bu, çözümündeki user @zakinster Notunun artık uygulanması gerekmediği anlamına gelir.)


İlginç: csv dosyası hala yüklüyken, yerel ayarı Denetim Masası'nda ABD İngilizcesi olarak ayarlarsanız ve dosyayı kaydederseniz, ABD İngilizcesi biçimine (liste ayırıcı olarak virgül ve ondalık ayırıcı olarak nokta) dönüştürülür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.