Excel CSV ve Standart CSV arasındaki gerçek fark


16

Excel CSV ve standart CSV arasındaki gerçek fark nedir?

Örneğin, bir hücrenin içinde satır sonları olan sütunları işlerken, hücre nasıl farklı şekilde kodlanır?

Yanıtlar:


19

Kesinlikle "standart" CSV olarak tanımladığınıza bağlıdır. Bildiğim kadarıyla Excel , "CSV Dosyaları için Ortak Biçim ve MIME Türü" olan RFC 4180'de belirtilen kurallara uyar .

İlk satırdaki ilk hücrenin iki satır sonu olduğu bir tablo düşünün. Excel'de aşağıdaki gibi görünecektir:

+---+---------------+------------+------------+
|   | A             | B          | C          |
+---+---------------+------------+------------+
| 1 | col1, line1a  |            |            |
|   | col1, line1b  |            |            |
|   | col1, line1c  | col2, row1 | col3, row1 |
| 2 | col1, row2    | col2, row2 | col3, row2 |
+---+---------------+------------+------------+

Şimdi Excel bunu nasıl dışa aktarır? Bakalım - bir metin editörü bunu gösterecekti:

"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"

Çok sofistike değil. 0DSatır sonu hücremizin olduğu yere bir satır başı (hex ) ekler . Her hücre çift tırnak içine alınır. Ayrıca, gerçek satırlar bir satır başı ile ayrılır.

Bunu doğru şekilde ayrıştırmak için bir CSV ayrıştırıcısının

  • çift ​​tırnak içinde (yani bir hücre) göründüğünde satır başını yoksay
  • değil , çift tırnak dışında göründüğünde bu satırbaşı görmezden

Eğer bunu yapmadıysa, böyle bir şeyle sonuçlanırdınız - şimdi iki yerine dört satır olduğunu unutmayın , çünkü satır sonlarını görmezden gelemedi.

+---+---------------+------------+------------+
|   | A             | B          | C          |
+---+---------------+------------+------------+
| 1 | "col1, line1a |            |            |
| 2 | col1, line1b  |            |            |
| 3 | col1, line1c" | col2, row1 | col3, row1 |
| 4 | col1, row2    | col2, row2 | col3, row2 |
+---+---------------+------------+------------+

Ancak, RFC'nin ne dediğine bakalım, belki Excel doğru mu yaptı?

Satır sonu (CRLF), çift tırnak ve virgül içeren alanlar çift tırnak içine alınmalıdır.

Düzgün, tam olarak Excel'in yaptığı şey bu. Özetle, Excel "standart" bir CSV dosyasının önerilerini izliyor gibi görünüyor. Uygun bir CSV ayrıştırıcısı verildiğinde, Excel CSV dosyalarını da okuyabilmelidir.


@shhck: Neden "excel" csv'yi "csv" ile ayıran csv ayrıştırıcı uygulamalarını görüyorum? Ayrıca excel'i oldukça sağlam bir uygulama olarak buldum.
user157195

@ user157195 Ayrıştırıcıya bağlı olarak, Excel'de ve Excel dışı giriş arasında neden bir fark olduğunu belgelerinde okumalısınız. Neden bir tane olması gerektiğini anlamıyordum. Bunu sadece Excel CSV'yi her biri gibi tedavi eden R'den biliyorum . Ancak XLS okuyabilir.
slhck

2
Tüm şekil ve boyutlarda yıllardır excel tarafından oluşturulan CSV dosyalarını programlı olarak okuyan biri olarak, slhck'in% 100 doğru olduğunu kanıtlayabilirim - Excel% 100 "standart" CSV dosyaları üretir. Her seferinde.
Mark Henderson

@Farseeker Onay için teşekkürler! (ve şimdi 1337 temsilciniz var !)
slhck

5
Dikkat! Ondalık noktası olarak ',' kullanan ülkelerde Excel "çok çok akıllı" olacak ve ';' ayırıcı karakter. Bu Zee Germanz'ı çok fazla "tırnak"; "" "" "" "" dosyaları "görmekten kurtarır. Ne yazık ki İngiltere ofisine gönderirse, AllSmooshedUpIntoASingleCellOnEveryLine alacak. Parlak.
Luke Usherwood

-1

Orijinal csv uygulamasından benim anlayışım, tüm metin alanlarının tırnak içine alınmış ve sayıların olması gerekmiyordu. Excel bunu yapmaz ve Excel tarafından oluşturulan csv dosyalarınızı microsoft olmayan platformlara yüklemeye çalışırsanız başarısız olurlar. Bu standart bir microsoft yaklaşımıdır, birlikte çalışabilirliği görmezden gelin ve kurallara körü körüne uymaya odaklanın. IE'de benzer bir şey oldu, dolgu ve kenar boşluğu özellikleri için html / css kurallarını doğru bir şekilde izlediler ve mevcut her web sayfası ve web tarayıcısının farklı şekilde davrandığını görmezden geldiler. Sonuç olarak, hemen hemen her web sayfasının IE için özel kuralları vardır. Ben excel işe yaramaz tarafından üretilen csv dosyaları bulmak ve kendimi düzgün bir şekilde kendiniz oluşturmak için "bitiştir" işlevlerinin bir sütun kullanın.

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.