使用Spreadsheet导出表格时,设置样式

时间:2024-01-25 16:21:12
$spreadsheet = new Spreadsheet();// 初始化

        $spreadsheet->createSheet();// 添加一个sheet

        $sheet = $spreadsheet->getSheet(1);// 操作第二个sheet

        $sheet = $spreadsheet->getActiveSheet();
        // 设置值的三种办法
        $sheet->setCellValue('E6', 'www.helloweba.net');
        $sheet->getCell('A1')->setValue('John');
        $sheet->setCellValueByColumnAndRow(5, 5, 'hahah');

        $sheet->mergeCellsByColumnAndRow(1, 2,1, 5);// 合并单元格
        $sheet->mergeCells('A1:E1');// 合并单元格

        for ($i=1; $i <= 10; $i++) { 
            $sheet->setCellValue('A'.$i, 'Hello World 加上考虑对方就爱上了对方就撒');// 合并单元格之后这样可以放进去
            $sheet->setCellValue('B'.$i, 'Hello World 加上考虑对方就爱上了对方就撒');// 合并单元格之后这样可以放进去
            $sheet->setCellValue('C'.$i, 'Hello World 加上考虑对方就爱上了对方就撒');// 合并单元格之后这样可以放进去
        }
        
        $sheet->getStyle('A3:C3')->getFont()->setBold(true);// 一定范围内字体加粗
        $sheet->getStyle('A4:C5')->getFont()->getColor()->setARGB('cc3399');// 字体颜色,使用rgb的颜色格式
        $sheet->getColumnDimension('A')->setWidth(50);// 设置列的宽度
        $sheet->getDefaultColumnDimension()->setWidth(50);//设置默认列宽
        $sheet->getColumnDimension('B')->setAutoSize(true);//自动设置列宽
        $sheet->getRowDimension('1')->setRowHeight(50);//设置行高
        $sheet->getDefaultRowDimension()->setRowHeight(15);// 设置默认行高
        $sheet->getStyle('A2:E2')->getFont()->setSize(14);// 设置字体大小

        $sheet->getStyle('A1:C1')->getAlignment()->setVertical(Alignment::VERTICAL_TOP);// 垂直向上
        $sheet->getStyle('A1:C1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('66ccff');// 设置背景色

        $styleArray = [
            'borders' => [
                'outline' => [
                    'borderStyle' => Border::BORDER_THICK,
                    'color' => ['argb' => '3399ff'],
                ],
                'inside' =>[
                    'borderStyle' => Border::BORDER_THIN,
                    'color' => ['argb' => 'cc0000'],
                ]
            ],
        ];
        $sheet->getStyle('A1:C5')->applyFromArray($styleArray);// 外边框,内边框

        $styleArray = [
            'borders' => [
                'outline' => [
                    'borderStyle' => Border::BORDER_THICK,
                    'color' => ['argb' => 'FFFF0000'],
                ],
            ],
            'font' => ['bold' => true],
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_CENTER,// 水平居中
                'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER //垂直居中
            ],
        ];
        $sheet->getStyle('B2:E8')->applyFromArray($styleArray);// 加粗,水平居中,边框线颜色

        $sheet->setTitle('就当是标题了');// 当前工作表标题
        
        $sheet->getCell('A4')->setValue("hello\nworld");// 换行

        $sheet->setCellValue('E6', 'www.helloweba.net');
        $sheet->getCell('E6')->getHyperlink()->setUrl('https://www.helloweba.net');// 点击直接跳转

        $spreadsheet->getProperties()
        ->setCreator("作者")    //作者
        ->setLastModifiedBy("修改者") //最后修改者
        ->setTitle("这是标题")  //标题
        ->setSubject("这是副标题") //副标题
        ->setDescription("这是描述")  //描述
        ->setKeywords("这是关键字") //关键字
        ->setCategory("分类"); //分类


        $writer = new Xlsx($spreadsheet);
        $name=rand(10,99);
        $writer->save($name.'.xlsx');// 直接下载到本地文件夹里
posted on 2019-09-27 09:42 雾林 阅读(...) 评论(...) 编辑 收藏