У меня есть база данных, которая отслеживает продажи виджетов по серийному номеру. Пользователи вводят данные и количество покупателя и сканируют каждый виджет в пользовательскую клиентскую программу. Затем они завершают заказ. Это все работает без нареканий.
Некоторым клиентам нужна совместимая с Excel электронная таблица приобретенных ими виджетов. Мы генерируем это с помощью PHP-скрипта, который запрашивает базу данных и выводит результат в виде CSV с именем магазина и связанными данными. Это тоже прекрасно работает.
При открытии в текстовом редакторе, таком как Блокнот или vi, файл выглядит следующим образом:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
Как видите, серийные номера присутствуют (в этом случае дважды, не все вторичные серийные номера одинаковы) и представляют собой длинные строки чисел. Когда этот файл открывается в Excel, результат становится:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
Как вы могли заметить, серийные номера заключены в двойные кавычки. Excel, похоже, не учитывает квалификаторы текста в файлах .csv. При импорте этих файлов в Access у нас нет никаких трудностей. При открытии их как текста, никаких проблем вообще нет. Но Excel, в обязательном порядке, превращает эти файлы в бесполезный мусор. Попытка проинструктировать конечных пользователей об открытии файла CSV с помощью приложения не по умолчанию становится, скажем так, утомительной. Есть ли надежда? Есть ли настройка, которую я не смог найти? Это похоже на случай с Excel 2003, 2007 и 2010.
Excel does not seem to respect text qualifiers in .csv files
- двойные кавычки не являются текстовыми квалификаторами, они просто допускают запятые в ваших данных, если вы не используете запятые в своих данных, то они не имеют смысла . Все данные в CSV-файле нетипизированы, поэтому в Excel можно только догадываться, что ваш большой серийный номер - это число , и именно тогда вы наберете максимальную точность Excel, равную 15 цифрам, что и является усечением ваших чисел.