2

这个 phpspreadsheet 非常好,但确实没有文档。所以,我读了很多书,并试图定义我个人的 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 文件中我发现了相同的错误值,例如,如果我在 csv 中有一个像 1345 这样的数字,我有 1,345

我也不想重新扫描 CSV 来纠正这个问题,因为我有数万行

4

0 回答 0