这个 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 来纠正这个问题,因为我有数万行