phpspredsheet导出excel,支持长数字

2021/6/2 20:22:37

本文主要是介绍phpspredsheet导出excel,支持长数字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

工作中比较多地遇到导出excel的需求,我通常是用phpspread完成,然而有时候像导出身份证号,银行卡号,订单号这些比较长而且格式为纯数字的数据时往往会出现变成科学计数法的情况,设置为默认文本格式又会出现末尾数字变成0的情况

经过搜索和测试后总算是有了解决办法,我将其封装成了一个函数:

function CreateExcel($Data, $Header, $Path, $FileName,$LongNumberField=null)
{
    $SpreadSheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
    $Sheet = $SpreadSheet->getActiveSheet();
    if($LongNumberField===null){
        array_unshift($Data, $Header);
        $SpreadSheet->getDefaultStyle()->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER);
        $Sheet->fromArray($Data);
    }
    else{
        $HeaderCount=count($Header);
        for($i=0;$i<$HeaderCount;$i++){
            $Sheet->setCellValueByColumnAndRow($i+1,1,$Header[$i]);
        }
        $RowIndex=2;
        $DataCount=count($Data);
        for($i=0;$i<$DataCount;$i++){
            $ColumnIndex=1;
            foreach ($Data[$i] as $Key=>$Value){
                if(in_array($Key,$LongNumberField)){
                    $Sheet->setCellValueExplicitByColumnAndRow($ColumnIndex,$RowIndex,$Value,\PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
                }
                else{
                    $Sheet->setCellValueByColumnAndRow($ColumnIndex,$RowIndex,$Value);
                }
                $ColumnIndex++;
            }
            $RowIndex++;
        }
    }
    $Xlsx = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($SpreadSheet);
    $Xlsx->save($Path . $FileName);
}

  示例:

$Data=[
        ['id'=>1,'name'=>'张三','bank_card'=>'123456789123456789'],
        ['id'=>2,'name'=>'李四','bank_card'=>'123456123456789789'],
];
$Header=['id','姓名','银行卡号'];
$Path='D:/www/test/';
$FileName='Export.xlsx';
$LongNumberField=['bank_card'];
CreateExcel($Data,$Header,$Path,$FileName,$LongNumberField);

  

 



这篇关于phpspredsheet导出excel,支持长数字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程