This commit is contained in:
JaguarJack 2021-05-14 08:36:45 +08:00
parent 66673a0714
commit f03421008a
2 changed files with 15 additions and 16 deletions

View File

@ -34,10 +34,10 @@ class Excel
* @param ExcelContract $excel * @param ExcelContract $excel
* @param $path * @param $path
* @param string $disk * @param string $disk
* @return mixed * @return string[]
* @throws Exception * @throws Exception
*/ */
public function save(ExcelContract $excel, $path, $disk = 'local') public function save(ExcelContract $excel, $path, $disk = 'local'): array
{ {
$this->excel = $excel; $this->excel = $excel;
@ -46,19 +46,18 @@ class Excel
!is_dir($path) && mkdir($path, 0777, true); !is_dir($path) && mkdir($path, 0777, true);
$file = $path . date('YmdHis').Str::random(6) . '.' .$this->extension; $file = $path . date('YmdHis').Str::random(6) . '.' .$this->extension;
Factory::make($this->extension)
->setSpreadsheet($this->spreadsheet)
->save($file);
if (!file_exists($file)) { Factory::make($this->extension, $this->spreadsheet)->save($file);
throw new FailedException($file . ' generate failed');
}
if ($disk) { if (!file_exists($file)) {
throw new FailedException($file . ' generate failed');
}
if ($disk) {
$file = $this->upload($disk, $file); $file = $this->upload($disk, $file);
} }
return ['url' => $file]; return ['url' => $file];
} }
/** /**
@ -68,7 +67,7 @@ class Excel
* @param $extension * @param $extension
* @return $this * @return $this
*/ */
public function setExtension($extension) public function setExtension($extension): Excel
{ {
$this->extension = $extension; $this->extension = $extension;

View File

@ -12,18 +12,18 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class Factory class Factory
{ {
public static function make($type) public static function make($type, $spreadsheet)
{ {
if ($type === 'xlsx') { if ($type === 'xlsx') {
return app(Xlsx::class); return app(Xlsx::class)->setSpreadsheet($spreadsheet);
} }
if ($type === 'xls') { if ($type === 'xls') {
return app(Xls::class); return new Xls($spreadsheet);
} }
if ($type === 'csv') { if ($type === 'csv') {
return app(Csv::class); return (new Csv($spreadsheet))->setUseBOM('utf-8');
} }
throw new FailedException(sprintf('Type [%s] not support', $type)); throw new FailedException(sprintf('Type [%s] not support', $type));