2013-08-29 3 views
5

У меня есть экспорт excel из mysql, который должен отображать данные из столбца, содержащего 17 цифр (уникальный, числовой, ссылочный). При использовании PHPExcel все, кроме этой ссылки, отображается нормально.Формат номера PHPExcel не отображается правильно

я использовал: $objPHPExcel->getActiveSheet()->getStyle('F'.$xlsRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); который приходит близко, но ...

При сравнении значений в листе Excel и исходные данные в базе данных, я вижу последние 2 цифры ссылки установлены на 00 .

например:

`20130829071002200` instead of `20130829071002210` 

Я попытался установить другие (числовые и нечисловые) форматы в setFormatCode и (PHPExcel_Style_NumberFormat ::), но я либо получить при использовании ###### STRING формат, научная нотация (2,01308E + 16) при использовании ничего или формат TEXT или выведенный выше результат (последние 2 цифры являются нулями)

Не знаю, что я делаю неправильно ...

Любая помощь будет оценена по достоинству.

ответ

8

Я бы предположил, что это потому, что ваш номер слишком велик, чтобы быть сохраненным как 32-разрядное целочисленное значение, поэтому он неявно устанавливается как float (со всеми соответствующими проблемами точности). Если вы работаете с числовыми значениями, большими, то вам действительно нужно рассматривать их как строки. Когда вы храните значение в ячейке PHPExcel, используйте setCellValueExplicit() с типом строки.

$objPHPExcel->getActiveSheet() 
    ->setCellValueExplicit(
     'A1', 
     '20130829071002210', 
     PHPExcel_Cell_DataType::TYPE_STRING 
    ); 
+0

Это определенно должен быть выбранный ответ ... хотелось бы, чтобы я наткнулся на это два часа назад! –

+0

setCellValueExplicit - ключ к успеху – Dummy

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