laravel+PhpSpreadsheet導出excel並下載

效果圖:php

                

官方網站:https://phpspreadsheet.readthedocs.io/en/latest/#getting-started前端

第一步:導入phpspreadsheetlaravel

在IDE裏面利用composer安裝,命令以下:ajax

composer require phpoffice/phpspreadsheet

第二步:在laravel項目中使用該插件composer

如下這段代碼的邏輯是先把須要的數據寫入excel而後保存在指定目錄下,在前端利用a標籤點擊下載excel文件字體

$spreadsheet = new Spreadsheet();//實例化
        $spreadsheet->setActiveSheetIndex(0);//設置excel的索引
        $sheet=$spreadsheet->getActiveSheet();
        /*設置單元格列寬*/
        $sheet->getColumnDimension('A')->setWidth(20);
        $sheet->getColumnDimension('B')->setWidth(15);
        $sheet->getColumnDimension('C')->setAutoSize(true);
        /*設置字體大小*/
        $sheet->getStyle('A1:c1')->getFont()->setBold(true)->setName('Arial')->setSize(10);
        //鎖定表頭
        $sheet->freezePane('A2');
        $sheet->setCellValue('A1','答卷時間')
            ->setCellValue('B1','答卷人姓名')
            ->setCellValue('C1','答案文本');

        $sheet->fromArray($result,null,'A2');
        $writer = new Xls($spreadsheet);
        $pathUrl = public_path(). '\excel/';
        $filePath=$pathUrl.$fileName;
        //判斷目錄是否存在,若是不存在就新建
        if(!is_dir($pathUrl))
            mkdir($pathUrl,0755,true);
        $writer->save($filePath); //保存excel

經過代碼能夠看出咱們能夠經過一些特定的設置去控制生成的excel的樣式,例如設置單元格寬度,設置字體大小和顏色等。這些能夠根據需求自行設置。網站

前端點擊按鈕下載的代碼以下:ui

$.ajax({
                    url:ajaxUrl,
                    type:'GET',
                    data:{
                        '_token':token,
                        'paperId':paperId,
                        'optionId':optionId
                    },
                    success:function (data) {
                        if (data.code===1){
                            if(data.data.length>0){
                                var path = data.data,//返回excel文件的地址
                                url = "{{asset('')}}"+path,//包裝地址
                                createA=document.createElement('a');//建立一個a標籤
                                createA.href=url;//給a標籤設置href屬性
                                createA.click();//給a標籤綁定點擊事件,經過a標籤的href屬性和點擊事件實現下載的功能

                            }
                        }else{
                            layer.msg(data.msg);
                        }
                    }
                })

若是各位大佬有更好的解決方法,歡迎留言討論。url

相關文章
相關標籤/搜索