如何在 Laravel Excel maatwebsite 上导入时获取真实数字?
How to get real number while importing on Laravel Excel maatwebsite?
我想在导入文件时获取数字作为实际值,例如:
当我打开 csv 时,单元格值:198610012009011005
但是当我使用 Laravel Excel 导入它时,它会被格式化为 1.98610012009011E+17
如何获取数字 (198610012009011005) 的真实值?
我尝试了下面的代码,但没有用
$data['excel'] = Excel::load($path, function ($reader) {
$reader->sheet(0, function ($sheet) {
$sheet->setColumnFormat(["A" => "@"]);
});
})->toArray();
它超出了整数类型的范围。
在 DB
中使用 string 作为列类型
或投
$number= (float) $value;;
其实你得到的值是真的。 1.98610012009011E+17
是指数值的形式。但是,如果您想以 string
形式获取它,请尝试这种方法。
您应该创建一个 ValueBinder
class。
// MyValueBinderClass
use PHPExcel_Cell;
use PHPExcel_Cell_DataType;
use PHPExcel_Cell_IValueBinder;
use PHPExcel_Cell_DefaultValueBinder;
class MyValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
{
public function bindValue(PHPExcel_Cell $cell, $value = null)
{
if (is_numeric($value))
{
$cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
return true;
}
// else return default behavior
return parent::bindValue($cell, $value);
}
}
然后在加载 csv 文件时将其绑定到:
$myValueBinder = new MyValueBinder;
$data = Excel::setValueBinder($myValueBinder)
->load($path)->toArray();
参考:http://www.maatwebsite.nl/laravel-excel/docs/import#formatting
我想在导入文件时获取数字作为实际值,例如:
当我打开 csv 时,单元格值:198610012009011005
但是当我使用 Laravel Excel 导入它时,它会被格式化为 1.98610012009011E+17
如何获取数字 (198610012009011005) 的真实值? 我尝试了下面的代码,但没有用
$data['excel'] = Excel::load($path, function ($reader) {
$reader->sheet(0, function ($sheet) {
$sheet->setColumnFormat(["A" => "@"]);
});
})->toArray();
它超出了整数类型的范围。
在 DB
中使用 string 作为列类型或投
$number= (float) $value;;
其实你得到的值是真的。 1.98610012009011E+17
是指数值的形式。但是,如果您想以 string
形式获取它,请尝试这种方法。
您应该创建一个 ValueBinder
class。
// MyValueBinderClass
use PHPExcel_Cell;
use PHPExcel_Cell_DataType;
use PHPExcel_Cell_IValueBinder;
use PHPExcel_Cell_DefaultValueBinder;
class MyValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
{
public function bindValue(PHPExcel_Cell $cell, $value = null)
{
if (is_numeric($value))
{
$cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
return true;
}
// else return default behavior
return parent::bindValue($cell, $value);
}
}
然后在加载 csv 文件时将其绑定到:
$myValueBinder = new MyValueBinder;
$data = Excel::setValueBinder($myValueBinder)
->load($path)->toArray();
参考:http://www.maatwebsite.nl/laravel-excel/docs/import#formatting