PHPExcel – установить ячейки как строку при загрузке из массива

$objPHPExcel->getActiveSheet()->fromArray($dataArray,null,"A2") 

У меня указанная выше строка кода. Проблема в том, что я не умею повторять и хочу, чтобы все значения ячеек были установлены как STRING, чтобы избежать автоматических модификаций текстов, ведущих нули.

PS Кроме того, будет оценен код для установки как STRING для выборочных столбцов.

Благодаря!

    Когда вы устанавливаете значения ячеек индивидуально, у вас есть возможность установить тип данных явно, но если вы используете метод fromArray() , у вас нет этой опции.

    Однако по умолчанию PHP использует связующее значение по умолчанию для определения типов данных из переданных значений и соответственно задает тип данных ячейки. Это поведение по умолчанию определено в классе /PHPExcel/Cell/DefaultValueBinder.php .

    Таким образом, вы можете создать собственное связующее значение, как описано в документации PHPExcel , которое установит каждое значение в виде строкового типа данных.

    Что-то вроде:

     class PHPExcel_Cell_MyColumnValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder { protected $stringColumns = []; public function __construct(array $stringColumnList = []) { // Accept a list of columns that will always be set as strings $this->stringColumns = $stringColumnList; } public function bindValue(PHPExcel_Cell $cell, $value = null) { // If the cell is one of our columns to set as a string... if (in_array($cell->getColumn(), $this->stringColumns)) { // ... then we cast it to a string and explicitly set it as a string $cell->setValueExplicit((string) $value, PHPExcel_Cell_DataType::TYPE_STRING); return true; } // Otherwise, use the default behaviour return parent::bindValue($cell, $value); } } // Instantiate our custom binder, with a list of columns, and tell PHPExcel to use it PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_MyColumnValueBinder(['A', 'B', 'C', 'E', 'F'])); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->fromArray($dataArray,null,"A2");