项目中用到了 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);
}
}
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel Excel导出表格时身份证号或手机号等长数字转为科学计数的解决方法
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel Excel导出表格时身份证号或手机号等长数字转为科学计数的解决方法