优化excel导出

This commit is contained in:
JaguarJack 2020-05-25 22:50:51 +08:00
parent 74a42e7022
commit bae43ad382
3 changed files with 45 additions and 23 deletions

View File

@ -2,9 +2,11 @@
namespace catcher\library\excel;
use catcher\CatchUpload;
use catcher\exceptions\FailedException;
use PhpOffice\PhpSpreadsheet\Exception;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use think\file\UploadedFile;
class Excel
@ -27,9 +29,8 @@ class Excel
* @param ExcelContract $excel
* @param $path
* @param null $disk
* @return bool
* @throws Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
* @return void
*/
public function save(ExcelContract $excel, $path, $disk = null)
{
@ -37,9 +38,19 @@ class Excel
$this->init();
(new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($this->spreadsheet))->save($path);
Factory::make(pathinfo($path, PATHINFO_EXTENSION))
->setSpreadsheet($this->spreadsheet)
->save($path);
// $this->upload($disk, $path);
if (!file_exists($path)) {
throw new FailedException($path . ' generate failed');
}
if ($disk) {
$path = $this->upload($disk, $path);
}
return $path;
}
/**

View File

@ -0,0 +1,29 @@
<?php
namespace catcher\library\excel;
use catcher\exceptions\FailedException;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class Factory
{
public static function make($type)
{
if ($type === 'xlsx') {
return app(Xlsx::class);
}
if ($type === 'xls') {
return app(Xls::class);
}
if ($type === 'csv') {
return app(Csv::class);
}
throw new FailedException(sprintf('Type [%s] not support', $type));
}
}

View File

@ -29,7 +29,7 @@ trait MacroExcel
protected function getStartSheet(): string
{
if (method_exists($this->excel, 'start')) {
return $this->excel->start();
$this->start = $this->excel->start();
}
return $this->start;
@ -74,11 +74,6 @@ trait MacroExcel
protected function getSheetColumns()
{
if (empty($this->columns)) {
if (method_exists($this->excel, 'sheetColumns')) {
$this->columns = $this->excel->sheetColumns();
return $this->columns;
}
$start = $this->getStartSheet();
$columns = [];
@ -145,19 +140,6 @@ trait MacroExcel
}
}
/**
* 设置其他信息
*
* @time 2020年05月25日
* @return void
*/
protected function setOther()
{
if (method_exists($this->excel, 'setOther')) {
$this->excel->setOther($this->getWorksheet());
}
}
/**
* register worksheet for excel
*