laravel 5.8 使用excel导出

laravel 5.8 使用excel导出

依赖(服务器上composer下载):
Maatwebsite\Excel
PhpOffice\PhpSpreadsheet

php拓展开启:
extends=fileinfo.dll

代码文件内引用:

use Maatwebsite\Excel\Facades\Excel;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

生成excel文件:

//查询表数据
			$rows = $this->currentMemberSignModel()->getRecord($param]);

            $spreadsheet = new Spreadsheet();
            $worksheet = $spreadsheet->getActiveSheet();
            $date = date('Y年m月d日');

//设置工作表标题名称
            $worksheet->setTitle("历史记录表-$date");
//表头
//设置单元格内容
            $worksheet->setCellValueByColumnAndRow(1, 1, "历史记录表-$date");

		//注: 一行一行的比较麻烦,有需求可自行改成遍历循环表头
            $worksheet->setCellValueByColumnAndRow(1, 2, '名称');
            $worksheet->setCellValueByColumnAndRow(2, 2, '昵称');
            $worksheet->setCellValueByColumnAndRow(3, 2, '签到语');
            $worksheet->setCellValueByColumnAndRow(4, 2, '日期');
            $worksheet->setCellValueByColumnAndRow(5, 2, '是否签到');


//合并单元格
            $worksheet->mergeCells('A1:J1');

            //将F2到H2合并为一个单元格。
//            $worksheet->mergeCells('F2:H2');
//            $worksheet->mergeCells('I2:K2');
//            $worksheet->mergeCells('L2:Q2');
//            $worksheet->mergeCells('R2:T2');
//            $worksheet->mergeCells('U2:W2');
//            $worksheet->mergeCells('X2:Z2');
            //设置默认列宽为12。
            $spreadsheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(12);

            $spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);//将A宽度设置为N字符宽
            $spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(38);
            $spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(20);
            $spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);//自动计算列宽
            $spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(20);

            $styleArray = [
                'font' => [
                    'bold' => true
                ],
                'alignment' => [
                    'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
                ],
            ];
//设置单元格样式
            $worksheet->getStyle('A1')->applyFromArray($styleArray)->getFont()->setSize(20);
            $worksheet->getStyle('A2:Z2')->applyFromArray($styleArray)->getFont()->setSize(12);
//            $worksheet->getStyle('A3:Z3')->applyFromArray($styleArray)->getFont()->setSize(12);

            //数据
            $len = count($rows);
            $j = 0;
            for ($i = 0; $i < $len; $i++) {
                $j = $i + 3; //从表格第3行开始
                $worksheet->setCellValueByColumnAndRow(1, $j, $rows[$i]['name']);
                $worksheet->setCellValueByColumnAndRow(2, $j, $rows[$i]['user_name']);
                $worksheet->setCellValueByColumnAndRow(3, $j, $rows[$i]['sign_text']);
                $worksheet->setCellValueByColumnAndRow(4, $j, $rows[$i]['day']);
                $worksheet->setCellValueByColumnAndRow(5, $j, $rows[$i]['sign']);

            }

            $styleArrayBody = [
                'borders' => [
                    'allBorders' => [
                        'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                        'color' => ['argb' => '666666'],
                    ],
                ],
                'alignment' => [
                    'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
                ],
            ];
            $total_rows = $len + 2;
            //添加所有边框/居中
            $worksheet->getStyle('A1:E' . $total_rows)->applyFromArray($styleArrayBody);


            //保存到文件
            $fileType = 'xlsx';
            $fileName = date('Y-m-d').'_Sign_'.time();

            //1.下载到服务器
            $writer = new Xlsx($spreadsheet);
            $writer->save(getcwd() . '/upload/excel/' . $fileName . '.' . $fileType);
//            chmod(getcwd() . '/upload/excel/' . $fileName . '.' . $fileType,0777);
            $url = 'https://www.xxxx.com/upload/excel/'.$fileName . '.' . $fileType;
```php

$url 为返回的excel文件下载地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值