2015-04-20 2 views
0

У меня есть простой скрипт, который выводит данные из моей базы данных в CSV-файл.PHP fputcsv показывает длинные целые числа в excel как научная нотация

Моя проблема заключается в том, что при экспорте мобильных номеров excel видит их как длинные целые числа и отображает их в научной нотации.

Если я перехожу к форматированию ячеек и изменяю их на число, все они отображаются нормально.

Есть ли способ установить столбец как целое число без изменения его в excel.

Вот мой код:

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=data.csv'); 


$output = fopen('php://output', 'w'); 


fputcsv($output, array('Book Reference','Company','Type','Site Name', 'Date', 'Time', 'Name', 'Email', 'Mobile', 'Team ID')); 

Ниже приведен код, который сидит в мое время цикла

// THIS IS WHERE I SET VARIABLES 

fputcsv($output, array($booking_reference,$company,$type,$site_name,$date,$time,$name,$email,$mobile,$team_id)); 
+0

не может сделать Муха что бой с CSV, потому что csv абсолютно не указывает на форматирование поля. если вы хотите, чтобы «большой» номер обрабатывался как текст, вам следует, вероятно, изучить использование библиотеки excel для создания собственного файла .xls, где вы МОЖЕТЕ заставить большие числа обрабатываться как текст. –

+0

Импортируйте файл в excel и, оттуда, вы можете определить свойства поля. Проблема связана с тем, как Excel сохраняет за собой CSV-импорт. –

+0

Мне нравится PHPExcel для генерации файлов xls с форматированными ячейками. В этой нить SO есть еще много предложений: http://stackoverflow.com/questions/3133357/what-is-the-best-way-to-create-xls-file-in-php –

ответ

1

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

Для этого: Для всех томов CSV, вы можете импортировать все данные в виде текста, перейдя в Data -> Get External Data from Text, а затем выбрав Delimited пункт маркированного, проверьте My data has headers, нажмите Next, а затем проверить поле Comma под Delimiters колонке, нажмите Next и - это ключ - выделите все столбцы в предварительном просмотре данных, а затем выберите Text под номером Column data format, прежде чем нажать Finish.

Это позволит импортировать все CSV-файлы в виде текста и решает все проблемы с ведущими и конечными 0, все проблемы научной нотации и гарантирует соответствие каждого VLOOKUP при прямом сравнении с другим текстовым полем.

+0

Да, я знаю, что могу изменить настройки в Excel, больше искали решение для самого файла. Может потребоваться изучить библиотеку для генерации .xls. Спасибо за ваш ответ. –

1

Мне приходилось иметь дело с такого рода вещами один раз. Хотя это не очень элегантный и не чистый CSV. Единственный способ, которым я знаю, заставить Excel отличать значение от источника csv, заключается в использовании «формулы» в качестве значения в csv-данных.

Так ... чтобы заставить первенствовать интерпретировать числа как текст, который вы могли бы использовать:

.... «=„5551212“», ...

 Смежные вопросы

  • Нет связанных вопросов^_^