У мене є база даних, яка відстежує продажі віджетів за серійним номером. Користувачі вводять дані та кількість покупця та сканують кожен віджет у користувацькій клієнтській програмі. Потім вони доопрацьовують замовлення. Це все працює бездоганно.
Деякі клієнти хочуть використовувати сумісну з 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 цифр, і це те, що обрізає ваші номери.