优化excel导出
This commit is contained in:
parent
74a42e7022
commit
bae43ad382
@ -2,9 +2,11 @@
|
|||||||
namespace catcher\library\excel;
|
namespace catcher\library\excel;
|
||||||
|
|
||||||
use catcher\CatchUpload;
|
use catcher\CatchUpload;
|
||||||
|
use catcher\exceptions\FailedException;
|
||||||
use PhpOffice\PhpSpreadsheet\Exception;
|
use PhpOffice\PhpSpreadsheet\Exception;
|
||||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Writer\Xls;
|
||||||
use think\file\UploadedFile;
|
use think\file\UploadedFile;
|
||||||
|
|
||||||
class Excel
|
class Excel
|
||||||
@ -27,9 +29,8 @@ class Excel
|
|||||||
* @param ExcelContract $excel
|
* @param ExcelContract $excel
|
||||||
* @param $path
|
* @param $path
|
||||||
* @param null $disk
|
* @param null $disk
|
||||||
|
* @return bool
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function save(ExcelContract $excel, $path, $disk = null)
|
public function save(ExcelContract $excel, $path, $disk = null)
|
||||||
{
|
{
|
||||||
@ -37,9 +38,19 @@ class Excel
|
|||||||
|
|
||||||
$this->init();
|
$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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
29
extend/catcher/library/excel/Factory.php
Normal file
29
extend/catcher/library/excel/Factory.php
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
@ -29,7 +29,7 @@ trait MacroExcel
|
|||||||
protected function getStartSheet(): string
|
protected function getStartSheet(): string
|
||||||
{
|
{
|
||||||
if (method_exists($this->excel, 'start')) {
|
if (method_exists($this->excel, 'start')) {
|
||||||
return $this->excel->start();
|
$this->start = $this->excel->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->start;
|
return $this->start;
|
||||||
@ -74,11 +74,6 @@ trait MacroExcel
|
|||||||
protected function getSheetColumns()
|
protected function getSheetColumns()
|
||||||
{
|
{
|
||||||
if (empty($this->columns)) {
|
if (empty($this->columns)) {
|
||||||
if (method_exists($this->excel, 'sheetColumns')) {
|
|
||||||
$this->columns = $this->excel->sheetColumns();
|
|
||||||
return $this->columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
$start = $this->getStartSheet();
|
$start = $this->getStartSheet();
|
||||||
|
|
||||||
$columns = [];
|
$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
|
* register worksheet for excel
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user