蝈子

【Laravel】使用phpoffice/phpspreadsheet导出数据

一、安装PHPExcel

1.下载:PHPExcel  https://github.com/PHPOffice/PHPExcel 

2.解压后:Classes文件夹改名为PHPExcel 

3.把文件夹PHPExcel 放到根目录vendor文件夹下

或者

1、composer安装:

composer require phpoffice/phpspreadsheet

二、控制器引用

use \PhpOffice\PhpSpreadsheet\IOFactory;
use \PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use \PhpOffice\PhpSpreadsheet\Spreadsheet;

二、导出方法

public function expor(Request $request)
{

  //导入模板
$spreadsheet = IOFactory::load(public_path('excel/exportOrder.xls'));
$spreadsheet->getActiveSheet()->setTitle('信息导出');
$i = 1;
  //默认填充数据
        $explame_data_list = array(
            array(
                'bank_deal_no' => '1234567890123456',
                'account_name' => '小明',
                'bank_card' => '4231456987436654',
                'deal_money' => '100.00',
                'deal_time' => date("Y-m-d H:i:s"),
            ),
        );

        //第二行起
        $baseRow = 2; //数据从N-1行开始往下输出 这里是避免头信息被覆盖
        foreach ($explame_data_list as $k => $val) {
            $i = $k + $baseRow;
            $worksheet->setCellValue('A' . $i, $val['bank_deal_no']);
            $worksheet->setCellValue('B' . $i, $val['account_name']);
            $worksheet->setCellValue('C' . $i, $val['bank_card']);
            $worksheet->setCellValue('D' . $i, $val['deal_money']);
            $worksheet->setCellValue('E' . $i, $val['deal_time']);;
        }
        //处理 数字过大会进行科学计数法
        $worksheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER);
        $worksheet->getStyle('C2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER)
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="订单导出.xls"');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
}

posted on 2020-11-30 20:34  蝈子  阅读(641)  评论(1编辑  收藏  举报

导航