CSV для Excel, включая ведущие нули и запятые - PullRequest
27 голосов
/ 21 ноября 2008

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

Если я хочу экранировать запятую в значениях, я могу написать ее как «640,480».

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

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

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

Ответы [ 12 ]

0 голосов
/ 01 октября 2014

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

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

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";
}
0 голосов
/ 21 ноября 2008

Глядя на электронную таблицу Excel, вы увидите, что вы не можете сделать с помощью CSV.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...