From 33fa83e0c0cd70e5d8602d47759a2da8a03ef4f9 Mon Sep 17 00:00:00 2001 From: augushong Date: Sun, 17 Apr 2022 20:01:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AF=BC=E5=87=BA=E6=95=88?= =?UTF-8?q?=E6=9E=9C=EF=BC=8C=E6=94=AF=E6=8C=81=E5=AF=BC=E5=87=BA=E5=9B=BE?= =?UTF-8?q?=E7=89=87=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/traits/Curd.php | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/app/admin/traits/Curd.php b/app/admin/traits/Curd.php index 4162e08..87aead9 100644 --- a/app/admin/traits/Curd.php +++ b/app/admin/traits/Curd.php @@ -12,6 +12,7 @@ namespace app\admin\traits; +use app\common\tools\PathTools; use EasyAdmin\annotation\NodeAnotation; @@ -136,8 +137,10 @@ trait Curd $write_col++; } + $runtime_file_list = []; + $this->model - ->where($where)->chunk(100, function ($list) use ($sheet, &$write_line, $fields, $image_fields) { + ->where($where)->chunk(100, function ($list) use ($sheet, &$write_line, $fields, $image_fields, &$runtime_file_list) { foreach ($list as $list_index => $item) { $write_line++; $write_col = 1; @@ -145,7 +148,7 @@ trait Curd foreach ($fields as $field_key => $field_name) { $col_key = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($write_col); - $cel = ''; + $cel = null; $value = \think\helper\Arr::get($item, $field_key); @@ -155,20 +158,27 @@ trait Curd try { - // $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing(); - // $drawing->setName($field_name); - // $drawing->setDescription($field_key); - // $drawing->setPath($value); - // $drawing->setHeight(36); + if (filter_var($value, FILTER_VALIDATE_URL)) { - // $drawing->setCoordinates($col_key . $write_line); - // $drawing->setWorksheet($sheet); + $runtime_file = PathTools::tempBuildPath(uniqid()); + $runtime_file_list[] = $runtime_file; + + file_put_contents($runtime_file, file_get_contents($value)); + + $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing(); + $drawing->setName($field_name); + $drawing->setDescription($field_key); + $drawing->setPath($runtime_file); + $drawing->setHeight(36); + + $drawing->setCoordinates($col_key . $write_line); + $drawing->setWorksheet($sheet); + } } catch (\Throwable $th) { $message = $th->getMessage(); $cel .= "\n" . $message; - } } else { $cel = $value; @@ -187,6 +197,10 @@ trait Curd $content = ob_get_contents(); ob_clean(); + foreach ($runtime_file_list as $runtime_file) { + unlink($runtime_file); + } + return download($content, $this->model->getName() . time() . '.xlsx', true); }