优化导出效果,支持导出图片;

This commit is contained in:
2022-04-17 20:01:20 +08:00
parent 5ec77814cc
commit 33fa83e0c0

View File

@@ -12,6 +12,7 @@
namespace app\admin\traits; namespace app\admin\traits;
use app\common\tools\PathTools;
use EasyAdmin\annotation\NodeAnotation; use EasyAdmin\annotation\NodeAnotation;
@@ -136,8 +137,10 @@ trait Curd
$write_col++; $write_col++;
} }
$runtime_file_list = [];
$this->model $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) { foreach ($list as $list_index => $item) {
$write_line++; $write_line++;
$write_col = 1; $write_col = 1;
@@ -145,7 +148,7 @@ trait Curd
foreach ($fields as $field_key => $field_name) { foreach ($fields as $field_key => $field_name) {
$col_key = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($write_col); $col_key = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($write_col);
$cel = ''; $cel = null;
$value = \think\helper\Arr::get($item, $field_key); $value = \think\helper\Arr::get($item, $field_key);
@@ -155,20 +158,27 @@ trait Curd
try { try {
// $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing(); if (filter_var($value, FILTER_VALIDATE_URL)) {
// $drawing->setName($field_name);
// $drawing->setDescription($field_key);
// $drawing->setPath($value);
// $drawing->setHeight(36);
// $drawing->setCoordinates($col_key . $write_line); $runtime_file = PathTools::tempBuildPath(uniqid());
// $drawing->setWorksheet($sheet);
$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) { } catch (\Throwable $th) {
$message = $th->getMessage(); $message = $th->getMessage();
$cel .= "\n" . $message; $cel .= "\n" . $message;
} }
} else { } else {
$cel = $value; $cel = $value;
@@ -187,6 +197,10 @@ trait Curd
$content = ob_get_contents(); $content = ob_get_contents();
ob_clean(); ob_clean();
foreach ($runtime_file_list as $runtime_file) {
unlink($runtime_file);
}
return download($content, $this->model->getName() . time() . '.xlsx', true); return download($content, $this->model->getName() . time() . '.xlsx', true);
} }