У меня есть база данных, которая отслеживает продажи виджетов по серийному номеру. Пользователи вводят данные и количество покупателя и сканируют каждый виджет в пользовательскую клиентскую программу. Затем они завершают заказ. Это все работает без нареканий.
Некоторым клиентам нужна совместимая с 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 цифрам, что и является усечением ваших чисел.Ответы:
Excel это бесполезный мусор.
Решение
Я был бы немного удивлен, если бы любой клиент, желающий получить ваши данные в формате Excel, не смог изменить видимое форматирование в этих трех столбцах на «Число» с нулевыми десятичными разрядами или на «текст». Но давайте предположим, что короткий документ с практическими рекомендациями исключен.
Ваши варианты:
="268435459705526269","",="268435459705526269"
(вы также можете="268435459705526269",,="268435459705526269"
сэкономить 2 символа). Это имеет преимущество в правильном отображении и, вероятно, в целом полезном, но едва различимом (поскольку они являются формулами).Будьте осторожны с вариантом 3, потому что некоторые программы (включая Excel и Open Office Calc) больше не будут обрабатывать запятые внутри
=""
полей как экранированные. Это означает, что="abc,xyz"
будет охватывать два столбца и прервать импорт.Использование формата
"=""abc,xy"""
решает эту проблему, но этот метод все еще ограничивает вас 255 символами из-за ограничения длины формулы Excel.источник
У нас была похожая проблема, когда у нас были CSV-файлы со столбцами, содержащими диапазоны, такие как 3-5, и Excel всегда конвертировал бы их в даты, например 3-5 было бы 3 марта, после чего переключение на числовые значения давало нам бесполезное целое число даты. Мы обошли это
Вы могли бы сделать то же самое здесь, я думаю.
ура
источник
Лучшим решением является создание XML Workbook. Нравится:
Файл должен иметь расширение .xml. Excel и OpenOffice открывают его правильно.
источник
Мое решение: у меня та же проблема с импортом серийных номеров. Они не должны рассматриваться как числа, то есть никакие математические функции не выполняются, но нам нужно полное число там. Самое простое, что у меня есть, это вставить пробел в серийный номер. например, «12345678 90123456 1234». Когда Excel импортирует его, он будет обрабатываться как текст, а не как цифра.
источник
У меня были искажены длинные номера счетов.
Вот как я это исправил:
Откройте файл file.csv в Libre Office / Open Office (может потребоваться указать разделители и т. Д.), Затем сохраните файл как файл Excel XML.
Затем откройте этот файл в Excel, и вы увидите, что столбцы больше не преобразуются в научный формат или что-то еще. Для безопасности щелкните правой кнопкой мыши по столбцу и явно задайте формат как Текст, затем сохраните как формат файла Excel.
Откройте файл формата Excel, и колонка должна быть в порядке!
источник
Мастер импорта - лучшее решение для случайных пользователей и разовых ситуаций. Если вам нужно программное решение, вы можете использовать метод QueryTables.Add (который используется мастером импорта за кулисами).
источник