国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

phpoffice/phpspreadsheet導出

protected $is_export = false;//是否開啟導出
protected $exportName = '';//導出excel名稱
protected $exportField = '';//導出excel名稱

public function create()
    {
        if(!$this->is_export) $this->error('未開啟導出');
        $request = $this->request;
        try{
            $page = $request->post('page', 1);

            $tableName = $this->model->getTable();//獲取表名
            $prefix = getenv('DB_PREFIX');//獲取表前綴
            $tables = Db::select("SHOW FULL COLUMNS FROM `{$prefix}{$tableName}`");//查詢表結構
            $exportField = [];
            foreach ($tables as $key=>$value){
                $exportField[] = $value->Comment?:$value->Field;//處理表結構
            }
            $page_pre = $request->post('limit')??$this->model->count();
            $data = $this->model->index( $this->filter, $page, $page_pre, $this->field, $this->order, $this->join);
            $exportName = "導出".(!empty($this->exportName)?$this->exportName:$tableName)."信息".date('Y-m-d',time());
            if(!empty($this->exportField)){
                $exportField = $this->exportField;
            }
            $path = Excel::excelExport($exportName,$exportField,$data->toArray()['data']);
            $this->back['path'] = $path;
        }catch (\Exception $e){
            $this->error($e->getMessage());
        }
        $this->success('導出成功');
    }

public static function excelExport($title="",$headArr = [], $data = [],$fileName = '') {
        $fileName       .= "_" . date("Y_m_d", time());
        $spreadsheet    = new Spreadsheet();

        $objPHPExcel    = $spreadsheet->getActiveSheet();
        $objPHPExcel->setTitle($title);
        $objPHPExcel->setCellValueByColumnAndRow(1, 1, $title);
        // 設置表頭
        $key = ord("A");
        foreach ($headArr as $v) {
            $colum = chr($key);
            $objPHPExcel->setCellValue($colum . '1', $v);
            $key += 1;
        }

        $column = 2;
        foreach ($data as $key => $rows) { // 行寫入
            $span = ord("A");
            foreach ($rows as $keyName => $value) { // 列寫入
                $objPHPExcel->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = new Xlsx($spreadsheet);
        $path = public_path().'/excel/'.$title.'.xls';
        $writer->save($path);
        //刪除臨時的sheet
        $spreadsheet->disconnectWorksheets();
        unset($spreadsheet);
        return $path;
    }
3019 3 5
3個評論

$this->model->index()是封裝的查詢數(shù)據(jù)操作

  • 暫無評論
cbasil

列寫入值那里還是要加入設置單元格格式,不然長數(shù)字就會變成科學計數(shù)法

$objPHPExcel->setCellValue(chr($span) . $column,$value,PHPExcel_Cell_DataType::TYPE_STRING);
  • 舊城·離人·半城煙 2022-08-24

    你這個在最新版已經沒有第三個參數(shù)了,第一種$objPHPExcel->setCellValueExplicitByColumnAndRow($keyName+1,$key+2,$value,DataType::TYPE_STRING); $keyName必須是int,$key類型int,第二種$objPHPExcel->setCellValue(chr($span) . $column, ' '.$value);

  • 舊城·離人·半城煙 2022-08-24

    我這里只能使用第二種,因為$keyName是對應數(shù)據(jù)庫字段,不可能是int類型

  • cbasil 2022-08-26

    嗯嗯,也可以先判斷類型再設置,

liziyu

曾經看過一篇文章是說yield生成器的(看的去里霧里的),如果大佬能把它融入進去就更完美了!

年代過于久遠,無法發(fā)表評論

舊城·離人·半城煙

896
積分
0
獲贊數(shù)
0
粉絲數(shù)
2019-12-04 加入
??