Подтвердить что ты не робот

CSV для Excel, включая как ведущие нули, так и запятые

Я хочу создать файл CSV для использования пользователем Excel для его открытия.

Если я хочу избежать запятой в значениях, я могу записать ее как "640,480".

Если я хочу сохранить ведущие нули, я могу использовать = "001234".

Но если я хочу сохранить как запятую, так и ведущие нули в значении, запись как = "001,002" будет разделена на два столбца. Кажется, нет решения для выражения правильных данных.

Есть ли способ выразить 001, 002 в CSV для Excel?

4b9b3361

Ответ 1

Ответ Кента Фредрика содержит решение:

  "=""001,002"""

(Я потрудился опубликовать это как отдельный ответ, потому что из Кента не ясно, что это действительное решение Excel.)

Ответ 2

Поместите префикс String в свои данные:

 "N001,002","N002,003" 

(Пока этот префикс не является E)

Эта нотация (по крайней мере, по крайней мере в OpenOffice) анализирует как всего 2 столбца с правильно сохраненными N001,002 байтами.

Спецификация CSV говорит, что разрешена внутри строк цитат.

Кроме того, предупреждение из опыта: убедитесь, что вы делаете это также с номерами телефонов. Excel иначе интерпретирует номера телефонов как число с плавающей запятой и сохраняет их в научной нотации:/, и 1.800E10 - это не очень хороший номер телефона.

В OpenOffice этот блок RawCSV также декодирует, как ожидалось:

  "=""001,002""","=""002,004"""

т.е.:

   $rawdata = '001,002'; 
   $equation = "=\"$rawdata\"";
   $escaped = str_replace('"','""',$equation); 
   $csv_chunk = "\"$escaped\"" ; 

Ответ 3

Do

"""001,002"""

Я нашел это, набрав "001,002", а затем выполнив save - как CSV в Excel. Если это не совсем то, что вы хотите (вам не нужны кавычки), это может быть хорошим способом найти то, что вы хотите.

Другим вариантом может быть использование текста с разделителями-табуляторами, если это вариант для вас.

Ответ 4

Читатель моего блога нашел решение: = "001" и CHAR (44) и "002", он кажется работоспособным на моей машине!

Ответ 5

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

"001,002". ""

Ответ 6

Глядя больше на таблицу Excel, она выглядит так, как вы хотите, не может быть выполнена с использованием CSV.

Этот сайт http://office.microsoft.com/en-us/excel/HP052002731033.aspx говорит:" Если ячейки отображают формулы вместо значений формул формулы преобразуются в виде текста. Все форматирование, графика, объекты и другое содержимое листа теряются. Символ евро будет преобразован в знак вопроса.

Однако вы можете изменить способ загрузки, чтобы получить желаемый результат. См. Эту веб-страницу: Microsoft импортирует текстовый файл.

Главное - выбрать "Импорт внешних данных-импорт данных-текстовых файлов", "Далее", "Далее", а затем отметьте "Текст" в формате данных столбцов. Это предотвратит его интерпретацию как число и потеряет форматирование.

Ответ 7

Я играл с CSV в Excel (я использую PHP для создания CSV, но думаю, что это решение работает на любом языке. Когда вы обнаруживаете, что ведущие символы (например, +, - или 0 исчезают, создают CSV с chr(13) в качестве префикса. Это непечатаемый символ, и он творит чудеса для моей версии Excel Office 2010. Я пробовал другие непечатаемые символы, но не повезло.

поэтому я использую решение Chirp Internet, но настроено с моим префиксом:

if (preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
    $str = chr(13)."$str";
}

Ответ 8

Если вы используете "Content-Disposition" и экспортируете из asp в excel с помощью HTML-тегов, вам нужно добавить "style = 'mso-number-format:\@;" к этому тегу и заставить его принять только текстовые значения, тем самым приводя к опустошению нулей, будут исключены, если принимается косая черта "\", используйте двойную косую черту "\"

Ответ 9

Все предлагаемые ответы, похоже, не работают для меня прямо сейчас ( "=" "blahblah" "и другие) во всех текущих версиях Excel или в приложении Numbers в OS X.

Единственное решение, с которым я столкнулся, работая, - это добавить escape-символ в начале строки (который является \0 на языках PHP или C). Все заканчивается обработанным, так как оно не вычисляется или не обрабатывается программным обеспечением при открытии листа расчётов.

echo "\0" . $data;

Ответ 10

Excel использует форматирование по умолчанию для столбцов CSV в зависимости от содержимого. Поэтому, если у вас есть 001 в csv, excel автоматически перевернет его на 1.

Единственный способ сохранить ведущие нули в excel из csv файла - это изменить расширение файла csv на .txt, а затем просто открыть excel, щелкнуть по открытому, выбрать txt файл, и вы увидите Мастер импорта текста. Выберите формат csv (через запятую), затем просто убедитесь, что вы выбрали "Текст" в качестве формата.

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