phpexcel — предотвратить преобразование текста в число? — Excel с использованием PHP-кода

Я пытаюсь преобразовать данные БД в формат Excel в коде PHP, но при преобразовании это изменение числа (45785695224589456584598752) в формат 4.57857E + 25. Как этого избежать?

0

Решение

У меня была такая же проблема (преобразование в число с плавающей запятой, которое вызывает ошибки усечения и округления.) Я использовал метод fromArray () для вставки всего запроса данных за раз, поэтому использование метода setValueExplicit (), предложенного в другом месте, было слишком рефакторинг.

Мое решение состояло в том, чтобы заставить PHPExcel ничего не конвертировать, предоставив собственный класс связывания значений. Это может быть тяжело для некоторых людей, поэтому вы можете сделать что-то еще, основываясь на этом (если вам нужны логические значения или что-то еще): https://fossies.org/dox/moodle-latest-29/DefaultValueBinder_8php_source.html

class CustomPHPExcelValueBinder extends PHPExcel_Cell_DefaultValueBinder
{
public function bindValue(PHPExcel_Cell $cell, $value = null)
{
// sanitize UTF-8 strings
if (is_string($value)) {
$value = PHPExcel_Shared_String::SanitizeUTF8($value);
}

// Set value explicit
$cell->setValueExplicit($value, static::dataTypeForValue($value));

// Done!
return true;
}

public static function dataTypeForValue($pValue = null)
{
return PHPExcel_Cell_DataType::TYPE_STRING;
}

}

Я использую это так:

$rows = $result->fetchAll(PDO::FETCH_NUM);

PHPExcel_Cell::setValueBinder(new CustomPHPExcelValueBinder());

$excelObj = PHPExcel_IOFactory::load(__DIR__ . self::TEMPLATE_FILE);

$excelObj->setActiveSheetIndex(0);
$excelObj->getActiveSheet()
->fromArray($rows, null, 'A2');
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]