From f03421008a35df6baede5472a94b85f184159f98 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Fri, 14 May 2021 08:36:45 +0800 Subject: [PATCH] fixed #33 --- extend/catcher/library/excel/Excel.php | 23 +++++++++++------------ extend/catcher/library/excel/Factory.php | 8 ++++---- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/extend/catcher/library/excel/Excel.php b/extend/catcher/library/excel/Excel.php index 4bd3a41..6cdef9b 100644 --- a/extend/catcher/library/excel/Excel.php +++ b/extend/catcher/library/excel/Excel.php @@ -34,10 +34,10 @@ class Excel * @param ExcelContract $excel * @param $path * @param string $disk - * @return mixed + * @return string[] * @throws Exception */ - public function save(ExcelContract $excel, $path, $disk = 'local') + public function save(ExcelContract $excel, $path, $disk = 'local'): array { $this->excel = $excel; @@ -46,19 +46,18 @@ class Excel !is_dir($path) && mkdir($path, 0777, true); $file = $path . date('YmdHis').Str::random(6) . '.' .$this->extension; - Factory::make($this->extension) - ->setSpreadsheet($this->spreadsheet) - ->save($file); - if (!file_exists($file)) { - throw new FailedException($file . ' generate failed'); - } + Factory::make($this->extension, $this->spreadsheet)->save($file); - if ($disk) { + if (!file_exists($file)) { + throw new FailedException($file . ' generate failed'); + } + + if ($disk) { $file = $this->upload($disk, $file); - } + } - return ['url' => $file]; + return ['url' => $file]; } /** @@ -68,7 +67,7 @@ class Excel * @param $extension * @return $this */ - public function setExtension($extension) + public function setExtension($extension): Excel { $this->extension = $extension; diff --git a/extend/catcher/library/excel/Factory.php b/extend/catcher/library/excel/Factory.php index 4fb2f1e..8340c89 100644 --- a/extend/catcher/library/excel/Factory.php +++ b/extend/catcher/library/excel/Factory.php @@ -12,18 +12,18 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class Factory { - public static function make($type) + public static function make($type, $spreadsheet) { if ($type === 'xlsx') { - return app(Xlsx::class); + return app(Xlsx::class)->setSpreadsheet($spreadsheet); } if ($type === 'xls') { - return app(Xls::class); + return new Xls($spreadsheet); } if ($type === 'csv') { - return app(Csv::class); + return (new Csv($spreadsheet))->setUseBOM('utf-8'); } throw new FailedException(sprintf('Type [%s] not support', $type));