Связывание строки типа в определенном столбце с phpspreadsheet - PullRequest
0 голосов
/ 01 мая 2018

эта таблица phps действительно хорошая, но бездокументарная. Итак, я много читал и пытался определить свой личный ValueBinder, и я думаю, что это правильно, но я не думаю, что он выполнен.

Первым делом я создаю свой переплет:

class MyValueBinder extends DefaultValueBinder{
/**
 * Bind value to a cell.
 *
 * @param Cell $cell Cell to bind value to
 * @param mixed $value Value to bind in cell
 *
 * @return bool
 */
   public function bindValue(Cell $cell, $value){
       if($cell->getColumn() == 'D'){
          // Set value explicit
          //$cell->setValueExplicit($value, DataType::TYPE_STRING);
          $cell->setValueExplicit("ok", DataType::TYPE_STRING);
       }
       return parent::bindValue($cell, $value);
   }
}

Как вы можете видеть, я просто связывал строку типа для каждой ячейки в столбце D, затем я попытался поместить значение ok в каждую ячейку столбца D только для отладки.

Тогда на моей главной странице:

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Cell\Cell;

\PhpOffice\PhpSpreadsheet\Cell\Cell::setValueBinder(new \PhpOffice\PhpSpreadsheet\Cell\MyValueBinder());

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();

//After this I load my file e do some modifications and then I make
// a Writer CSV and write everything on a csv file.

В этот момент пришла грусть, потому что в CSV-файле я нахожу то же неправильное значение, например, если у меня есть число, как 1345 в CSV, у меня есть 1,345

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

...