在使用 maatwebsite/excel 包匯出Excel的時候,有的單元格里會存放手機號等一大串的數字,這一串數字會被Excel軟體處理為科學計數法,在后續處理資料的時候會產生不小的麻煩,一個個去調會很麻煩,有幸在度娘上搜到了一個方法,奈何原網站打不開了,所以在這里記錄一下這個問題的解決辦法,
使用maatwebsite/excel的教程可以參考這篇文章
Laravel 使用 maatwebsite/Excel 3.1 匯入匯出 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 = https://www.cnblogs.com/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 = https://www.cnblogs.com/json_encode($value);
}
//超過10位的數字轉文本格式,防止科學計數法
if (strlen($value) > 10) {
$cell->setValueExplicit($value, DataType::TYPE_STRING);
return true;
}
return parent::bindValue($cell, $value);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403514.html
標籤:PHP
上一篇:Java三大特性之多型
