Чем отличается csv от excel

MonkeyMind

2010-06-19 в 08:59

Что такое файлы CSV и XLS (Microsoft или OpenOffice)? В чем главное отличие этих двух файлов?


5 ответов на вопрос

  • Популярные
  • Новые
  • С комментариями
  • Активные

OlimilOops

2010-06-19 в 09:05

CSV: означает C omma S разделенных V значений. это простой текстовый (ANSI) формат.
XLS: основной двоичный формат файла для всех предварительных таблиц e X ce L S

Mark Baker

2010-06-19 в 09:19

Файлы CSV содержат простой текст в виде последовательности значений (ячеек), разделенных запятыми (,) в виде ряда строк (строк). Вы можете открыть файл CSV в текстовом редакторе и прочитать его самостоятельно. Многие приложения способны читать файлы CSV, а многие языки предоставляют встроенные функции, которые упрощают чтение / запись в формате CSV.

XLS — это двоичный файл рабочей книги MS Excel, который содержит информацию обо всех рабочих листах рабочей книги, включая содержимое и форматирование (маскирование чисел, раскраска, условное форматирование и т. Д.), А также может содержать дополнительные элементы, такие как диаграммы, изображения и т. Д. XLS Файлы могут быть прочитаны только приложениями, которые были специально написаны для чтения их формата, и могут быть записаны только таким же образом.

Damo

2010-06-19 в 09:19

CSV-файлы специально разработаны для широкой поддержки; любая ОС или приложение, которое импортирует или экспортирует данные, обычно имеет поддержку CSV.

Они ничего не делают, кроме хранения данных — например, без форматирования текста.

Файлы Excel содержат те же данные, но в двоичном формате. Это позволяет файлу сохранять определенные функции Excel — диаграммы, форматирование и т. Д.

Keerthana

2011-04-29 в 13:20

Тип файла .csv может содержать простой текст и без форматирования, кроме того, что в каком столбце. Тип файла .xls содержит данные, а также форматирование

Ranjit Saini

2011-08-08 в 07:07

  1. Excel — это приложение для работы с электронными таблицами, которое сохраняет файлы в своем собственном формате, а CSV — это стандарт сохранения табличной информации в текстовом файле с разделителями.
  2. CSV — очень старый метод сохранения таблиц по сравнению с Excel
  3. Файлы CSV не могут хранить другую информацию, такую ​​как форматирование, в то время как это стандартно в Excel
  4. Файлы, сохраненные в Excel, не могут быть открыты или отредактированы текстовыми редакторами, в то время как файлы CSV могут.

Похожие вопросы

  • 16
    Запрос файла CSV


  • 5
    Excel 2007 преобразует поля CSV в формулы


  • 8
    Как объединить два файла CSV?



  • 3
    Как сделать так, чтобы Excel 2007 прекратил форматирование больших чисел как научных обозначений?


  • 8
    Как заставить Excel импортировать файл CSV с запятыми в некоторых полях содержимого?


  • 3
    Преобразование файла CSV с помощью sed


  • 2
    Программа для приятного отображения CSV из буфера обмена


  • 5
    Как я могу преобразовать файлы данных SAS в нечто простое, например, данные CSV?


  • 3
    Перенос контактов со старого телефона на iPhone


  • 2
    Конвертировать XLS в CSV в Unix


  • Разница между Excel и CSV

Разница между Excel и CSV

Excel и CSV часто используются взаимозаменяемо, и пользователь мало знает о различиях, основной природе и работе обоих типов файлов. Это просто источник информации для пользователя. Оба помогают пользователю управлять, обновлять и хранить данные для пользователя, и они используются почти во всех организациях и корпорациях. Сегодня в этой статье мы попытаемся понять ключевые различия между Excel и CSV и характером работы обоих форматов файлов.

Сравнение лицом к лицу между Excel и CSV (Инфографика)

Ниже приведено 8 лучших отличий между Excel и CSV

Ключевые различия между Excel и CSV

Давайте обсудим некоторые из основных различий между Excel и CSV:

  • Excel — это двоичный формат файла, который содержит информацию для всех рабочих книг и используется во всех рабочих таблицах. С другой стороны, CSV расшифровывается как значения, разделенные запятыми. CSV находится в текстовом формате, информация представляет собой последовательность значений, содержащихся в листе, и разделяется запятыми. CSV — это текст, который полон информации и менее совместим с Excel
  • CSV-файлы форматируются и экспортируются из всех баз данных. Это просто источник информации, CSV-файл может быть сгенерирован из любой базы данных, например, Oracle, SQL, Server, MySQL, Sybase, информатики, доступа, Excel, базы данных и т. Д.
  • Excel — это не только хранилище информации, но и инструмент для финансового аналитика для глубокого анализа данных и цифр. Аналитик может создавать отчеты о прибылях и убытках, анализировать отношения, составлять сводные данные об огромных данных и выполнять функции и формулы в формате Excel, это не просто хранилище информации. С другой стороны, мы сравниваем Excel с CSV, CSV — это просто набор данных в виде простого текста, который не позволяет пользователю выполнять глубокий анализ набора данных и применять функции.
  • Excel лучше по сравнению с форматом файла CSV, потому что по этой причине CSV потребляет меньше размера файла, когда пользователь импортирует данные, это гораздо более быстрый формат по сравнению с Excel. CSV не манипулирует данными и сохраняет их как есть. Excel также позволяет пользователю функцию надстройки

Excel и CSV Сравнительная таблица

Давайте посмотрим на 8 лучших Сравнение между Excel и CSV.

превосходить

CSV

Файлы Excel могут быть прочитаны только приложениями, но не в каких-либо других системах, приложениях или платформах данных. Файл CSV не нуждается в какой-либо конкретной платформе, чтобы открыть его, его также можно открыть в простом текстовом редакторе, и пользователь может просто прочитать и понять его.
Excel потребляет больше памяти, чем CSV. CSV потребляет меньше памяти, чем Excel.
Excel обычно больше, медленнее и сложнее по сравнению с CSV. CSV обычно быстрее и менее сложен по сравнению с Excel.
Файлы, сохраненные в формате Excel, не могут быть отредактированы текстовыми редакторами, а также файл Excel может быть защищен паролем. Файлы, сохраненные в формате CSV, могут редактироваться текстовыми редакторами, а также файл CSV не может быть защищен паролем.
Excel может легко выполнять кодирование VBA, функции, формулы и создавать сводки по сравнению с CSV. CSV не может легко выполнять кодирование, функции, формулы VBA и создавать сводки по сравнению с Excel.
Конечному пользователю намного проще читать, понимать и понимать большие объемы данных по сравнению с CSV. Чтение большого набора данных намного сложнее для конечного пользователя, чтобы читать, понимать и понимать по сравнению с Excel.
Excel можно открыть только в офисе Microsoft и не поддерживает никакую другую платформу по сравнению с CSV. Формат CSV совместим и может использоваться на нескольких платформах, таких как блокнот, доступ и т. Д. По сравнению с Excel.
Excel также предоставляет пользователю возможность внешнего связывания данных из других источников, а также пользователь может создавать собственные надстройки. При сравнении с Excel такая функция недоступна в формате CSV.

Вывод

Оба Excel против CSV имеют свои ограничения и преимущества и могут работать в тандеме друг с другом. В некотором смысле, они дополняют друг друга, и их работа сильно отличается друг от друга. Большинство людей находят, что Excel вполне достаточно для большинства потребностей в электронных таблицах. На самом деле нет необходимости использовать CSV, если у вас нет специального приложения, которое незаменимо и не распознает данные в файле Excel.

Рекомендуемые статьи

Это было руководство к разнице между Excel и CSV. Здесь мы также обсудим ключевые отличия Excel от CSV с помощью инфографики и сравнительной таблицы. Вы также можете взглянуть на следующие статьи, чтобы узнать больше

  1. Excel против доступа
  2. РОЭ против РОА — основные отличия
  3. Сравнение между SPSS и EXCEL
  4. Конвертировать Excel в CSV | Примеры с шаблоном Excel

Разница между CSV и Excel

CSV и Excel или xls — это два разных типа расширений файлов, которые оба содержат данные, разница между ними заключается в том, что в CSV или значениях, разделенных запятыми, данные находятся в текстовом формате, разделенном запятыми, в то время как в Excel или Xls данные находятся в табличный формат или мы говорим, что в строках и столбцах и в расширении файла CSV нет форматирования данных, тогда как в Excel мы можем форматировать данные в соответствии с нашими требованиями.

CSV и Excel — это два формата, которые разработаны для хранения данных в базе данных и помогают бизнес-организации вести свой бизнес.

Что такое CSV (значения, разделенные запятыми)?

CSV — это формат текстового файла, в котором значения разделяются запятыми и, соответственно, будут храниться целые данные. Данные CSV можно легко открыть в различных текстовых редакторах, таких как блокнот, и проанализировать их для извлечения и анализа необходимых деталей.

CSV-файл в Блокноте

Что такое Excel?

В нынешнюю эпоху любой корпоративный профессионал вряд ли сможет выжить без превосходства, поскольку Excel позволяет им хранить, обрабатывать, анализировать и экспортировать данные в нужном порядке. Это хорошо структурированный и организованный формат файла, который специально разработан для табличных данных и для сопоставления деталей из различных независимых таблиц.

Данные Excel в Microsoft Excel

CSV против инфографики Excel

Ключевые различия между CSV и Excel

Ключевые отличия заключаются в следующем:

  • Полная форма CSV — это значения, разделенные запятыми, а MS Excel — это Microsoft Excel.
  • Расширение файла CSV — «.csv», а расширение файла Excel — «.xls / .xlsx».
  • В файле CSV, поскольку все данные необходимо сохранить в текстовом формате, данные, относящиеся к изображениям (JPEG, PNG, JPG и т. Д.), Сохранить невозможно. Хотя Excel является двоичным форматом, поэтому все данные, связанные с изображениями, можно легко сохранить в формате Excel.
  • CSV — это простой текстовый файл и, следовательно, это обычный файл без какой-либо стандартизации или структурирования. В то время как Excel очень стандартизирован и структурирован с учетом требований современного корпоративного мира.
  • Файлы CSV можно открывать в любом текстовом редакторе, например в блокноте, а также в MS Excel, а в Excel можно открывать только в MS Excel или таблицах Google.
  • Файл CSV представляет собой простой текстовый файл, поэтому все данные будут храниться с использованием запятой в качестве разделителя между двумя единицами данных, поэтому диаграммы невозможно сохранить в формате CSV. В то время как Excel сохраняет данные в двоичном формате, поэтому все данные, относящиеся к диаграммам, могут быть сохранены в формате Excel.
  • Файлы CSV не могут быть напрямую связаны с внешними источниками, в то время как файл Excel можно легко интегрировать с внешними источниками таким образом, что ввод может поступать из внешних источников, а извлечение данных также может быть напрямую связано с внешними источниками.
  • Анализ и обработка данных могут быть выполнены эффективно и структурированно в Excel, в то время как то же самое невозможно сделать в формате CSV, поскольку данные в таком формате не могут быть связаны с другими данными.
  • Хранить файлы CSV очень легко, так как их размер всегда будет меньше, в то время как файлы Excel с большой базой данных очень сложно хранить и поддерживать, так как существует высокая вероятность повреждения или сбоя.
  • Файлы CSV в основном используются профессионалами в области анализа или визуализации данных, в то время как Excel используется неспециалистами, а также профессионалами в зависимости от их требований и целей работы.

Сравнительная таблица

Основа CSV MS Excel
Полная форма Полная форма CSV — это значения, разделенные запятыми. Полная форма MS Excel — Microsoft Excel
Расширение CSV-файл с расширением .csv. Файл Excel с расширением, обозначенным как .xls / .xlsx
Запущен в Формат CSV выпущен в 2005 г. MS Excel выпущен в 1987 г.
Сохранение данных таблицы Поскольку CSV сохраняет данные в текстовом формате, сохранить данные, связанные с изображениями, невозможно. Поскольку Excel сохраняет данные в формате двоичного файла, данные изображения можно легко сохранить в том же формате.
Стандартизация CSV — это просто текстовый файл, поэтому он не стандартизирован. Excel в высшей степени стандартизирован в отношении хранения данных и связанных с ним операций.
вид CSV — это формат, в котором хранятся данные MS Excel — это инструмент, в котором данные сохраняются, и их можно анализировать.
Платформа  Файлы CSV можно открывать в различных текстовых редакторах, а также в Excel. Файлы Excel можно открывать только в MS excel.
Диаграммы и изображения Поскольку он сохраняет данные в текстовом формате, он не может сохранять данные, такие как диаграмма. MS Excel может легко сохранять данные в виде диаграмм
Связь с внешними источниками Для файлов CSV невозможна какая-либо связь с внешними данными и обновление данных. Файлы MS Excel могут быть связаны с внешними источниками данных и могут быть включены надстройки.
Манипуляции Файлы CSV не допускают никаких манипуляций с данными. MS Excel позволяет выполнять любые операции с данными и анализировать связанные с ними данные.
Место хранения CSV-файл требует меньше места и может храниться в малом объеме памяти. Для файла Excel требуется больше места для хранения и большой объем памяти.
Применение Основное применение в анализе и визуализации данных. Excel можно использовать в повседневных операциях до принятия сложных организационных решений.
Использован Большинство, профессионалы Используется непрофессионалами, а также профессионалами в зависимости от их требований.

Вывод

CSV и Excel — своеобразные форматы для хранения данных, которые используются разными людьми в огромном количестве. У обоих есть свои плюсы и минусы. Но и то, и другое можно разумно использовать в настоящее время для загрузки данных, визуализации данных, анализа данных и манипулирования ими.

И Excel, и CSV помогают хранить данные в табличном формате. Помимо этой общности, существует масса различий в их функциях и способах использования. Давайте подробно обсудим эти различия в этой статье.

Excel CSV
  • Это двоичный файл, содержащий информацию обо всех листах в книге.
  • CSV расшифровывается как C omma S eparated V alues. Это простой текстовый формат с серией значений, разделенных запятыми.
  • Excel не только хранит данные, но также может выполнять операции с данными.
  • CSV-файл — это просто текстовый файл, он хранит данные, но не содержит форматирования, формул, макросов и т. Д. Он также известен как плоские файлы.
  • Excel — это электронная таблица, которая сохраняет файлы в собственном проприетарном формате, а именно xls или xlsx.
  • CSV — это формат для сохранения табличной информации в текстовый файл с разделителями и расширением .csv.
  • Файлы, сохраненные в Excel, не могут открываться или редактироваться текстовыми редакторами
  • Файлы CSV можно открывать или редактировать с помощью текстовых редакторов, например блокнота.
  • В хранилище данных Excel предпочтительнее для подробной спецификации стандартизированной схемы.
  • В хранилище данных CSV следует довольно простой и простой схеме.
  • Любая библиотека языков программирования для анализа данных Excel обычно больше, медленнее и сложнее.
  • Любой язык программирования для синтаксического анализа данных CSV тривиален, генерировать его чрезвычайно просто.
  • Без четкого различия или разделения между числовыми значениями и текстом Excel может испортить ваши почтовые индексы и номера кредитных карт благодаря функциям автоматического форматирования.
  • CSV безопасен и позволяет четко различать числовые значения и текст. CSV не обрабатывает данные и хранит их как есть.
  • В Excel у вас должны быть начальный и конечный теги для каждого столбца в каждой строке.
  • В CSV вы пишете заголовки столбцов только один раз
  • Excel потребляет больше памяти при импорте данных
  • Импорт файлов CSV может быть намного быстрее, а также потребляет меньше памяти
  • Чтение больших файлов пользователю намного проще в Excel для конечного пользователя. Кроме того, у вас могут быть дополнительные функции, такие как выбор отдельных ячеек для импорта, автоматическое преобразование даты и времени, чтение формул и их результатов, фильтры, сортировка и т. Д.
  • Чтение больших файлов в CSV не будет таким простым, как Excel для конечного пользователя
  • Помимо текста, данные также могут храниться в виде диаграмм и графиков.
  • Каждая запись хранится как одна строка текстового файла, а каждая новая строка обозначает новую строку базы данных. CSV не может хранить диаграммы или графики
  • Файл Excel можно открыть только с помощью Microsoft Excel doc.
  • CSV можно открыть с помощью любого текстового редактора в Windows, например блокнота, MS Excel, Microsoft Works 9 и т. Д.
  • Excel может подключаться к внешним источникам данных для получения данных. Вы можете использовать настраиваемую надстройку в Excel, чтобы расширить ее функциональные возможности. Excel позволяет просматривать данные с функцией подробного отслеживания и комментирования.
  • Все эти функции недоступны в CSV
  • Разработчику сложно программно управлять файлами Excel, поскольку Excel является проприетарным. Это особенно верно для языков, отличных от .NET.
  • Как разработчику легко программно управлять CSV, поскольку, в конце концов, это простые текстовые файлы.

КЛЮЧЕВАЯ РАЗНИЦА

  • CSV — это формат для сохранения табличной информации в текстовый файл с разделителями и расширением .csv, тогда как Excel — это электронная таблица, которая хранит файлы в собственном частном формате, а именно xls или xlsx.
  • CSV — это простой текстовый формат с рядом значений, разделенных запятыми, тогда как Excel — это двоичный файл, содержащий информацию обо всех листах в книге.
  • Файл CSV не может выполнять операции с данными, в то время как Excel может выполнять операции с данными.
  • Файлы CSV работают быстрее и потребляют меньше памяти, тогда как Excel потребляет больше памяти при импорте данных.
  • Файлы CSV можно открывать с помощью любого текстового редактора в Windows, а файлы Excel нельзя открывать с помощью текстовых редакторов.

Сходства между файлами CSV и Excel

CSV — это аббревиатура от «значений, разделенных запятыми». Он используется для хранения табличных данных, где имена столбцов и значения строк разделены запятыми. Следующее изображение иллюстрирует это

  • Оба могут быть открыты в программах для работы с электронными таблицами.
  • Оба хранят данные в табличных форматах, то есть в столбцах и строках.
  • И тем и другим можно управлять с помощью функций и возможностей Excel.

На следующем снимке экрана показан файл CSV, открытый в Excel.

Время на прочтение
11 мин

Количество просмотров 366K

CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Начнем с того, что форматом CSV на самом деле называют три разных текстовых формата, отличающихся символами-разделителями: собственно сам CSV (comma-separated values — значения, разделенные запятыми), TSV (tab-separated values — значения, разделенные табуляциями) и SCSV (semicolon separated values — значения, разделенные точкой с запятой). В жизни все три могут называться одним CSV, символ-разделитель в лучшем случае выбирается при экспорте или импорте, а чаще его просто «зашивают» внутрь кода. Это создает массу проблем в попытке разобраться.

Как иллюстрацию возьмем казалось бы тривиальную задачу: импортировать в Microsoft Outlook данные из таблицы в Microsoft Excel.

В Microsoft Excel есть средства экспорта в CSV, а в Microsoft Outlook — соответствующие средства импорта. Что могло быть проще — сделал файлик, «скормил» почтовой программе и — дело сделано? Как бы не так.

Создадим в Excel тестовую табличку:

Текстовая табличка

… и попробуем экспортировать ее в три текстовых формата:

«Текст Unicode» Кодировка — UTF-16, разделители — табуляция, переводы строк — 0×0D, 0×0A, объем файла — 222 байт
«CSV (разделители — запятые)» Кодировка — Windows-1251, разделители — точка с запятой (не запятая!), во второй строке значение телефонов не взято в кавычки, несмотря на запятую, зато взято в кавычки значение «01;02», что правильно. Переводы строк — 0×0D, 0×0A. Объем файла — 110 байт
«Текстовые файлы (с разделителями табуляции)» Кодировка — Windows-1251, разделители — табуляция, переводы строк — 0×0D, 0×0A. Значение «01;02» помещено в кавычки (без особой нужды). Объем файла — 110 байт

Какой вывод мы делаем из этого?.. То, что здесь Microsoft называет «CSV (разделители — запятые)», на самом деле является форматом с разделителями «точка с запятой». Формат у Microsoft — строго Windows-1251. Поэтому, если у вас в Excel есть Unicode-символы, они на выходе в CSV отобразятся в вопросительные знаки. Также то, что переводами строк является всегда пара символов, то, что Microsoft тупо берет в кавычки все, где видит точку с запятой. Также то, что если у вас нет Unicode-символов вообще, то можно сэкономить на объеме файла. Также то, что Unicode поддерживается только UTF-16, а не UTF-8, что было бы сильно логичнее.

Теперь посмотрим, как на это смотрит Outlook. Попробуем импортировать эти файлы из него, указав такие же источники данных. Outlook 2007: Файл -> Импорт и экспорт… -> Импорт из другой программы или файла. Далее выбираем формат данных: «Значения, разделенные запятыми (Windows)» и «Значения, разделенные табуляцией (Windows)».

«Значения, разделенные табуляцией(Windows)» Скармливаем аутлуку файл tsv, с разделенными табуляцией значениями и!.. — чтобы вы думали?.. Outlook склеивает поля и табуляцию не замечает. Заменяем в файле табуляцию на запятые и, как видим, поля уже разбирает, молодец.
«Значения, разделенные запятыми (Windows)» А вот аутлук как раз понимает все верно. Comma — это запятая. Поэтому ожидает в качестве разделителя запятую. А у нас после экселя — точка с запятой. В итоге аутлук распознает все неверно.

Два майкрософтовских продукта не понимают друг друга, у них напрочь отсутствует возможность передать через текстовый файл структурированные данные. Для того, чтобы все заработало, требуются «пляски с бубном» программиста.

Мы помним, что Microsoft Excel умеет работать с текстовыми файлами, импортировать данные из CSV, но в версии 2007 он делает это очень странно. Например, если просто открыть файл через меню, то он откроется без какого-либо распознавания формата, просто как текстовый файл, целиком помещенный в первую колонку. В случае, если сделать дабл-клик на CSV, Excel получает другую команду и импортирует CSV как надо, не задавая лишних вопросов. Третий вариант — вставка файла на текущий лист. В этом интерфейсе можно настраивать разделители, сразу же смотреть, что получилось. Но одно но: работает это плохо. Например, Excel при этом не понимает закавыченных переводов строк внутри полей.

Более того, одна и та же функция сохранения в CSV, вызванная через интерфейс и через макрос, работает по-разному. Вариант с макросом не смотрит в региональные настройки вообще.

Стандарта CSV как такового, к сожалению, нет, но, между тем, существует т.н. memo. Это RFC 4180

2005-го

года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.

Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:

  • между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
  • разделители — запятые, в конце строки не должно быть запятой,
  • в последней строке CRLF не обязателен,
  • первая строка может быть строкой заголовка (никак не помечается при этом)
  • пробелы, окружающие запятую-разделитель, игнорируются.
  • если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
  • т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
  • если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.

Вот в нотации ABNF описание формата:

 file = [header CRLF] record *(CRLF record) [CRLF]
   header = name *(COMMA name)
   record = field *(COMMA field)
   name = field
   field = (escaped / non-escaped)
   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
   non-escaped = *TEXTDATA
   COMMA = %x2C
   DQUOTE =  %x22
   LF = %x0A
   CRLF = CR LF
   TEXTDATA =  %x20-21 / %x23-2B / %x2D-7E
 

Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:

  • строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
  • количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
  • Квотить кавычки через «слэш» не по стандарту, делать так не надо.
  • Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
  • Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
  • Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
  • У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.

Пример валидного CSV, который можно использовать для тестов:

Фамилия, Имя, Адрес, Город/штат, индекс, просто строка
Иванов,Иван, Ленина 20, Москва, 08075, "1/3"
Tyler, John,110 terrace, PA,20121, "1.24"
"Петров 
""Кул""", Петя,120 Hambling St., NJ,08075, "1,24"
Смирнов,Вася,"7452 Street ""Near the Square"" road", York, 91234, "3-01"
,Миша,,Ленинград, 00123, "03-01"
"Джон ""Черная голова"", Клод",Рок,"", Маями бич,00111, "0000"
Сергей,,

точно такой же SCSV:

Фамилия; Имя; Адрес;  Город/штат; индекс; просто строка
Иванов;Иван; Ленина 20; Москва; 08075;"1/3"
Tyler; John;110 terrace; PA; 20121;"1.24"
"Петров 
""Кул"""; Петя;120 Hambling St.; NJ;08075;"1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road"; York; 91234;"3-01"
;Миша;;Ленинград; 00123;"03-01"
"Джон ""Черная голова""; Клод";Рок;""; Маями бич;00111; "0000"
Сергей;;

Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.

Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:

Ошибки Excel-я при импорте:

  1. Учлись пробелы, окружающие разделители
  2. Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
  3. В поле индекс Excel «опустил» ведущие нули.
  4. в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол

Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:

С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.

Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.

Фамилия;Имя;Адрес;Город/штат;индекс;просто строка
Иванов;Иван;Ленина 20;Москва;="08075";="1/3"
Tyler; John;110 terrace;PA;="20121";="1.24"
"Петров 
""Кул""";Петя;120 Hambling St.;NJ;="08075";="1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road";York;="91234";="3-01"
;Миша;;Ленинград;="00123";="03-01"
"Джон ""Черная голова"";Клод";Рок;"";Маями бич;="00111";="0000"
Сергей;;

И вот что случаеся, если мы открываем этот файлик в экселе:

Резюмирую.

Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:

  1. выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
  2. выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
  3. выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
  4. выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
  5. выбрать, выводить ли строку заголовка;
  6. выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и «, но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию …,»abc«»,… посчитает за ошибку;
  7. совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =»<значение поля>«.
  8. определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.

Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:

  1. разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
  2. предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
  3. предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
  4. предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
  5. предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
  6. определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.

Рауф Алиев,
заместитель технического директора Mail.Ru Group

What are CSV and XLS(Microsoft or OpenOffice) files ? What is the main difference between these two files ?

asked Jun 19, 2010 at 8:59

Puru's user avatar

1

CSV : means Comma Separated Values. it is a plain text (ansi) format.
XLS : is the main binary file format for all eXceL SpreadsheetS

DavidPostill's user avatar

DavidPostill

151k77 gold badges348 silver badges386 bronze badges

answered Jun 19, 2010 at 9:05

OlimilOops's user avatar

OlimilOopsOlimilOops

3763 silver badges9 bronze badges

1

CSV files hold plain text as a series of values (cells) separated by commas (,) in a series of lines (rows). You can actually open a CSV file in a text editor and read it yourself. Many applications are capable of reading CSV files, and many languages provide built-in functions that simplify reading/writing CSV format.

XLS is an MS Excel workbook binary file, which holds information about all the worksheets in a workbook, comprising both content and formatting (number masking, colouring, conditional formatting, etc), and can also hold additionals like charts, images, etc. XLS files can only be read by applications that have been especially written to read their format, and can only be written in the same way.

answered Jun 19, 2010 at 9:19

Mark Baker's user avatar

Mark BakerMark Baker

2413 silver badges6 bronze badges

CSV files are intentionally designed to be widely supported; any OS or application that imports or exports data usually has CSV support.

They do nothing else but hold data — no text formatting for example.

Excel files hold the same data, but in binary format. This allows the file to save specifc Excel features — charts, formatting, etc.

answered Jun 19, 2010 at 9:19

Damo's user avatar

DamoDamo

1513 bronze badges

  1. Excel is a spreadsheet application that saves files into its own format while CSV is a standard of saving tabular information into a delimited text file
  2. CSV is a very old method of saving tables compared to Excel
  3. CSV files cannot store other information like formatting while this comes standard in Excel
  4. Files saved in excel cannot be opened or edited by text editors while CSV files can.

slhck's user avatar

slhck

220k69 gold badges596 silver badges585 bronze badges

answered Aug 8, 2011 at 7:07

Ranjit Saini's user avatar

.csv file type can contains plain text and no formatting other than what is in what column. The .xls file type contains data and and also formatting

soandos's user avatar

soandos

24.1k28 gold badges101 silver badges134 bronze badges

answered Apr 29, 2011 at 13:20

Keerthana's user avatar

Понравилась статья? Поделить с друзьями:
  • Чем открыть шаблон microsoft word
  • Чем открыть формулы в word
  • Чем открыть формат ods excel
  • Чем открыть файлы word на андроид
  • Чем открыть файлы excel в разных окнах