天天看點

fastadmin使用PHPExcel導出表格資料到Excel中

fastadmin中有自帶的導出Excel,但有時會需要自定義導出表格,這裡使用PHPExcel導出:

一,下載下傳phpExcel

1. git clone https://github.com/PHPOffice/PHPExcel

fastadmin使用PHPExcel導出表格資料到Excel中

2.也可以百度下載下傳

完成之後會出現以下以下的檔案夾 

fastadmin使用PHPExcel導出表格資料到Excel中

内部目錄

fastadmin使用PHPExcel導出表格資料到Excel中

 二,把上圖圈住的那個PHPExcel檔案夾拷貝到你的項目中

fastadmin使用PHPExcel導出表格資料到Excel中

三,在你的控制器中添加導出方法:

    public function export() {

        //擷取資料

        list($total, $list) = $this->_index();

        //vendor('PHPExcel.PHPExcel');

        Vendor('PHPExcel.PHPExcel');//調用類庫,路徑是基于vendor檔案夾的

        Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');

        Vendor('PHPExcel.PHPExcel.Writer.Excel2007');

        //執行個體化

        $objExcel = new \PHPExcel();

        //設定文檔屬性

        $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');

        //設定内容

        $objActSheet = $objExcel->getActiveSheet();

        $key = ord("A");

        $letter = explode(',', "A,B,C,D");

        $arrHeader = array('手機号', '标題', '掃描内容', '日期');

        //填充表頭資訊

        $lenth = count($arrHeader);

        for ($i = 0; $i < $lenth; $i++) {

            $objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");

        };

        //填充表格資訊

        foreach ($list as $k => $v) {

            $k += 2;

            //表格内容

            $objActSheet->setCellValue('A' . $k, $v['phone']);

            $objActSheet->setCellValue('B' . $k, $v['title']);

            $objActSheet->setCellValue('C' . $k, $v['content']);

            $objActSheet->setCellValue('D' . $k, date('Y-m-d H:i:s', $v['createtime']));

            //$objActSheet->setCellValue('E' . $k, $v['goods_images']);

            // 圖檔生成

            //$objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();

            //$objDrawing[$k]->setPath(ROOT_PATH."public/static/image/playbtn.png");

            // 設定寬度高度

            //$objDrawing[$k]->setHeight(40);//照片高度

            //$objDrawing[$k]->setWidth(40); //照片寬度

            // 設定圖檔要插入的單元格

            //$objDrawing[$k]->setCoordinates('C' . $k);

            // 圖檔偏移距離

            //$objDrawing[$k]->setOffsetX(30);

            //$objDrawing[$k]->setOffsetY(12);

            //$objDrawing[$k]->setWorksheet($objExcel->getActiveSheet());

            // 表格高度

            //$objActSheet->getRowDimension($k)->setRowHeight(20);

        }

        $outfile = md5("掃描文本" . time()) . ".xlsx";

        ob_end_clean();

        header("Content-Type: application/force-download");

        header("Content-Type: application/octet-stream");

        header("Content-Type: application/download");

        header('Content-Disposition:inline;filename="' . $outfile . '"');

        header("Content-Transfer-Encoding: binary");

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header("Pragma: no-cache");

        $objWriter->save('php://output');

    }

四:在你的index.html頁面添加導出按鈕:

<a href="javascript:;" target="_blank" rel="external nofollow" class="btn btn-success btn-export {:$auth->check('scanpen/text/export')?'':'hide'}" title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> {:__('Export')}</a>

五:在你的js檔案中調用導出方法:

fastadmin使用PHPExcel導出表格資料到Excel中

注意一定要使用window.location.href,不要用ajax請求,否則浏覽器不會出現下載下傳條。

簡單的直接在【index: function () {  }】中添加代碼:

$(document).on("click", ".btn-export", function(){

                console.log(111);

                window.location.href = "text/export";

            });

該文檔參考了https://blog.csdn.net/qq_41588568/article/details/109000580