php"> public function dumpData ( ) { error_reporting ( 0 ) ; ini_set ( 'display_errors' , 0 ) ; $limit = $this -> request -> post ( 'limit' , 20 , 'intval' ) ; $offset = $this -> request -> post ( 'offset' , 0 , 'intval' ) ; $page = floor ( $offset / $limit ) + 1 ; $where = [ ] ; $name = trim ( $this -> request -> param ( 'product_type_name' ) ) ; $product_type_id = $this -> request -> param ( 'product_type_id' ) ; $brand_ids = $this -> request -> param ( 'brand_ids' ) ; if ( $name != '' ) { $where [ ] = [ 'product_type.l_name_zh' , "LIKE" , "%{ $name } %" ] ; } $brand_ids && $where [ ] = [ 'category.brand_ids' , "in" , $brand_ids ] ; if ( ! empty ( $product_type_id ) ) { $product_type_ids = $this -> model -> getChildIds ( $product_type_id ) ; if ( empty ( $product_type_ids ) ) $product_type_ids = [ - 9999 ] ; $where [ ] = [ 'product_type.product_type_id' , "in" , $product_type_ids ] ; } $field = [ 'category.category_carousel_id' , 'category.product_type_id' , 'category.description' , 'category.create_time' , 'category.update_time' , 'category.create_user_id' , 'category.update_user_id' , 'category.category_carousel_id' , ] ; $orderby = 'category_carousel_id desc' ; $res = CategoryCarouselService :: indexList ( formatWhere ( $where ) , $field , $orderby , $limit , $page ) ; $list = $res [ 'rows' ] ; $img_count = array_column ( $list , 'img_list' ) ; $img_count_list = [ ] ; foreach ( $img_count as $v ) { $img_count_list [ ] = count ( $v ) ; } rsort ( $img_count_list ) ; $max_img_count = $img_count_list [ 0 ] ?? 100 ; $spreadsheet = \ PhpOffice\ PhpSpreadsheet\ IOFactory:: load ( root_path ( ) . 'public/tpl/分类优势导出模板.xls' ) ; $worksheet = $spreadsheet -> getActiveSheet ( ) ; $worksheet -> setTitle ( 'Product catalog' ) ; $count = count ( $list ) ; $worksheet -> insertNewRowBefore ( 3 , $count - 1 ) ; $worksheet -> getColumnDimension ( 'E' ) -> setWidth ( $max_img_count * 20 ) ; $startline = 2 ; $path = root_path ( ) . 'public/tmpxls/category/' ; @mkdir ( $path ) ; $arr = [ '序号' , '产品总类' , '产品大类' , '产品小类' , '图片列表' , '产品小类优势' , '创建时间' , '更新时间' , '创建人' , '更新人' ] ; foreach ( $list as $k => $v ) { $offsetX = 10 ; $offsetY = 10 ; foreach ( $v [ 'img_list' ] as $index => $img_list ) { $img_url = $img_list [ 'file_path_text' ] ?? '' ; if ( $img_url == '' ) continue ; $line = $k + $startline ; $fileInfo = pathinfo ( $img_url ) ; $file = $fileInfo [ 'filename' ] . '.' . $fileInfo [ 'extension' ] ; if ( file_exists ( $path . $file ) === false ) { copy ( $img_url , $path . $file ) ; } if ( ! file_exists ( $path . $file ) ) { continue ; } if ( file_exists ( $path . $file ) === true ) { $drawing = new \ PhpOffice\ PhpSpreadsheet\ Worksheet\ Drawing( ) ; $drawing -> setName ( 'Image ' . ( $index + 1 ) ) ; $drawing -> setDescription ( 'Image ' . ( $index + 1 ) ) ; $drawing -> setPath ( $path . $file ) ; $drawing -> setWidth ( 80 ) ; $drawing -> setHeight ( 80 ) ; $drawing -> setCoordinates ( 'E' . $line ) ; $drawing -> setOffsetX ( $offsetX ) ; $drawing -> setOffsetY ( $offsetY ) ; $drawing -> setWorksheet ( $spreadsheet -> getActiveSheet ( ) ) ; $offsetX += 90 ; } } $worksheet -> getCell ( 'A' . $line ) -> setValue ( ++ $k ) ; $worksheet -> getCell ( 'B' . $line ) -> setValue ( $v [ 'first_level_name' ] ) ; $worksheet -> getCell ( 'C' . $line ) -> setValue ( $v [ 'second_level_name' ] ) ; $worksheet -> getCell ( 'D' . $line ) -> setValue ( $v [ 'third_level_name' ] ) ; $worksheet -> getCell ( 'F' . $line ) -> setValue ( $v [ 'description' ] ) ; $worksheet -> getCell ( 'G' . $line ) -> setValue ( $v [ 'create_time' ] ) ; $worksheet -> getCell ( 'H' . $line ) -> setValue ( $v [ 'update_time' ] ) ; $worksheet -> getCell ( 'I' . $line ) -> setValue ( $v [ 'create_user_text' ] ) ; $worksheet -> getCell ( 'J' . $line ) -> setValue ( $v [ 'update_user_text' ] ) ; } $filename = date ( "YmdHis" ) . '分类优势' ; header ( 'Content-Type: application/vnd.ms-excel ' ) ; header ( 'Content-Disposition: attachment;filename=' . $filename . '.Xlsx' ) ; header ( 'Cache-Control: max-age=0' ) ; $writer = new \ PhpOffice\ PhpSpreadsheet\ Writer\ Xlsx( $spreadsheet ) ; return $writer -> save ( 'php ://output' ) ; }
模板