Laravel Excel导出表格时身份证号或手机号等长数字转为科学计数的解决方法
admin 阅读:98 2024-03-03
项目中用到了 Laravel Excel 导出数据(https://github.com/SpartnerNL/Laravel-Excel),但是在遇到身份证号或手机号这种长数字时,导出的数据会自动转为科学计数法,实际上是不符合我们的需求的,解决方法是使用 Value binders :
use PhpOfficePhpSpreadsheetCellCell;
use PhpOfficePhpSpreadsheetCellDataType;
use PhpOfficePhpSpreadsheetCellDefaultValueBinder;
class ExamineesExport extends DefaultValueBinder implements FromQuery,WithCustomValueBinder
{
use Exportable;
public function __construct(int $project_id)
{
$this->project_id = $project_id;
}
//设置导出格式,如果字段长度大于10,那么设置成 TYPE_STRING ,否则调用 DefaultValueBinder 的默认设置
public function bindValue(Cell $cell, $value)
{
if (strlen($value) > 10) {
$cell->setValueExplicit($value, DataType::TYPE_STRING);
return true;
}
return parent::bindValue($cell, $value);
}
public function query()
{
return Examinee::query()->where('project_id',$this->project_id);
}
}
声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!