Laravel使⽤maatwebsiteexcel时长数字出现科学计数法的解决办法
在使⽤ maatwebsite/excel 包导出Excel的时候,有的单元格⾥会存放⼿机号等⼀⼤串的数字,这⼀串数字会被Excel软件处理为科学计数法,在后续处理数据的时候会产⽣不⼩的⿇烦,⼀个个去调会很⿇烦,有幸在度娘上搜到了⼀个⽅法,奈何原⽹站打不开了,所以在这⾥记录⼀下这个问题的解决办法。
使⽤maatwebsite/excel的教程可以参考这篇⽂章
⾔归正传,⾸先到 vendor/maatwebsite/excel/src/DefaultValueBinder.php ⽂件
打开后的⽂件内容是这样的:
<?php
namespace Maatwebsite\Excel;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder as PhpSpreadsheetDefaultValueBinder;
class DefaultValueBinder extends PhpSpreadsheetDefaultValueBinder
{
/**
* @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 (is_array($value)) {
$value = \json_encode($value);
}
return parent::bindValue($cell, $value);
}虚拟内存 设置
}
引⼊use PhpOffice\PhpSpreadsheet\Cell\DataType类
在bindValue⽅法⾥添加
if (strlen($value) > 10) {
$cell->setValueExplicit($value, DataType::TYPE_STRING);
return true;
壮族三月三}
使⽤PHPstorm的时候会提⽰This file dose not belong to the project ,选择第⼀个就好了。
修改后的⽂件是这样⼦的:
各省的简称<?php谢娜刘烨张杰
namespace Maatwebsite\Excel;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder as PhpSpreadsheetDefaultValueBinder;
class DefaultValueBinder extends PhpSpreadsheetDefaultValueBinder
{
/**
* @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 (is_array($value)) {
$value = \json_encode($value);
}
//超过10位的数字转⽂本格式,防⽌科学计数法
if (strlen($value) > 10) {
$cell->setValueExplicit($value, DataType::TYPE_STRING);
春酒读后感>星期一英文怎么写
return true;
}
return parent::bindValue($cell, $value); }
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论