调用
$resArr = [
AfterSheet::class => function(AfterSheet $event) use(
$marginTop,$marginLeft,$marginBottom,$marginRight,$header,$footer,
$column,
$rowHeightArr,
$fontNameDefault,
$fontSizeDefault,
$fontSizeProject,
$projectObj,
$projectMaterialTypeObj,
$materialArr,
$user
){
$this->setPageProperty($event,$this->fileName,$marginTop,$marginBottom,$marginLeft,$marginRight,$header,$footer,true,PageSetup::ORIENTATION_LANDSCAPE,PageSetup::PAPERSIZE_A4,51,SheetView::SHEETVIEW_NORMAL);
foreach ($column as $key=> $value){
$event->sheet->getDelegate()->getColumnDimension($key)->setWidth($value);
}
}
common
<?php
namespace App\Exports;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter;
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing;
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
class ExporstCommon
{
public function setProperty($event,$title)
{
$event->writer->getProperties()->setCreator('Patrick');
$event->writer->getProperties()->setCreator("S&W");
$event->writer->getProperties()->setLastModifiedBy("S&W");
$event->writer->getProperties()->setTitle($title);
$event->writer->getProperties()->setSubject("白皮书");
$event->writer->getProperties()->setDescription("该文档于".date('Y年m月d日 H时i分s秒').'使用PHP生成');
$event->writer->getProperties()->setKeywords("office ".date('Y')." 白皮书");
$event->writer->getProperties()->setCategory("白皮书");
}
public function setPageProperty($event,$title,$marginTop,$marginBottom,$marginLeft,$marginRight,$header,$footer,$pageCentered,$orientation,$paperSize,$scale,$ViewModel)
{
$event->sheet->getDelegate()->setTitle($title);
$event->sheet->getDelegate()->getPageMargins()->setTop($marginTop);
$event->sheet->getDelegate()->getPageMargins()->setBottom($marginBottom);
$event->sheet->getDelegate()->getPageMargins()->setLeft($marginLeft);
$event->sheet->getDelegate()->getPageMargins()->setRight($marginRight);
$event->sheet->getDelegate()->getPageMargins()->setHeader($header);
$event->sheet->getDelegate()->getPageMargins()->setFooter($footer);
if($pageCentered){
$event->sheet->getDelegate()->getPageSetup()->setHorizontalCentered(true);
}else{
$event->sheet->getDelegate()->getPageSetup()->setVerticalCentered(true);
}
$event->sheet->getDelegate()->getPageSetup()->setOrientation($orientation);
$event->sheet->getDelegate()->getPageSetup()->setPaperSize($paperSize);
$event->sheet->getDelegate()->getPageSetup()->setScale($scale);
$event->sheet->getDelegate()->getSheetView()->setView($ViewModel);
}
public function setRowHeight($event ,$row,$height)
{
$event->sheet->getDelegate()->getRowDimension($row)->setRowHeight($height);
}
public function setColumnWidth($event,$column)
{
foreach ($column as $key=> $value){
$event->sheet->getDelegate()->getColumnDimension($key)->setWidth($value);
}
}
public function setStyle($event,$pCellCoordinate,$fontName,$fontBold=true,$fonSizes,$horizontal,$vertical,$wrapText=true,$fontColor=[])
{
$event->sheet->getDelegate()->getStyle($pCellCoordinate)->applyFromArray([
'font' => [
'name' => $fontName??'微软雅黑',
'bold' => $fontBold,
'size'=>$fonSizes,
'color'=>$fontColor,
],
'alignment' => [
'horizontal' => $horizontal,
'vertical' => $vertical,
'wrapText' => $wrapText,
],
]);
}
public function setStyleBorder($event,$pCellCoordinate,$top,$bottom,$left,$right)
{
$style = [];
if($bottom){
$style['bottom'] = [
'borderStyle' =>$bottom['borderStyle'],
'color' =>$bottom['color']??[ 'argb' => '00000000' ],
];
}
if($top){
$style['top'] = [
'borderStyle' =>$top['borderStyle'],
'color' =>$top['color']??[ 'argb' => '00000000' ],
];
}
if($left){
$style['left'] = [
'borderStyle' =>$left['borderStyle'],
'color' =>$left['color']??[ 'argb' => '00000000' ],
];
}
if($right){
$style['right'] = [
'borderStyle' =>$right['borderStyle'],
'color' =>$right['color']??[ 'argb' => '00000000' ],
];
}
if(count($style)>0){
$event->sheet->getDelegate()->getStyle($pCellCoordinate)->applyFromArray(['borders'=>$style ]);
}
}
public function setRigntHeardImg($event,$leftimgSizeArr,$rightimgSizeArr)
{
$event->sheet->getDelegate()->getHeaderFooter()->setOddHeader('&L&G'.'&R&G');
$imgUrlLeft = env('IMG_URL').$leftimgSizeArr['imgUrl'];
$imgWidthLeft = $leftimgSizeArr['imgWidth'];
$imgHeightLeft = $leftimgSizeArr['imgHeight'];
$imgOffsetXLeft = $leftimgSizeArr['imgOffsetX'];
$imgOffsetYLeft = $leftimgSizeArr['imgOffsetY'];
$imgUrlLeft .= "?x-oss-process=image/resize,m_pad,h_$imgHeightLeft,w_$imgWidthLeft,color_FFFFFF";
$filesize = @getimagesize($imgUrlLeft);
if($filesize){
$imgUrlLeftContent = file_get_contents($imgUrlLeft);
file_put_contents(storage_path().'/tmp/left.png',$imgUrlLeftContent);
$objDrawing1 = new HeaderFooterDrawing();
$objDrawing1->setName('PHPExcel logo');
$objDrawing1->setPath(storage_path().'/tmp/left.png');
$objDrawing1->setHeight($imgHeightLeft);
$objDrawing1->setWidth($imgWidthLeft);
$objDrawing1->setOffsetX($imgOffsetXLeft);
$objDrawing1->setOffsetY($imgOffsetYLeft);
$event->sheet->getDelegate()->getHeaderFooter()->addImage($objDrawing1, HeaderFooter::IMAGE_HEADER_LEFT);
}
$imgUrlRight = env('IMG_URL').$rightimgSizeArr['imgUrl'];
$imgWidthRight = $rightimgSizeArr['imgWidth'];
$imgHeightRight = $rightimgSizeArr['imgHeight'];
$imgOffsetXRight = $rightimgSizeArr['imgOffsetX'];
$imgOffsetYRight = $rightimgSizeArr['imgOffsetY'];
$imgUrlRight .= "?x-oss-process=image/resize,m_pad,h_$imgHeightRight,w_$imgWidthRight,color_FFFFFF";
$filesize = @getimagesize($imgUrlLeft);
if($filesize){
$imgUrlRightContent = file_get_contents($imgUrlRight);
file_put_contents(storage_path().'/tmp/right.png',$imgUrlRightContent);
$objDrawing = new HeaderFooterDrawing();
$objDrawing->setName('PHPExcel logo');
$objDrawing->setPath(storage_path().'/tmp/right.png');
$objDrawing->setHeight($imgHeightRight);
$objDrawing->setWidth($imgWidthRight);
$objDrawing->setOffsetX($imgOffsetXRight);
$objDrawing->setOffsetY($imgOffsetYRight);
$event->sheet->getDelegate()->getHeaderFooter()->addImage($objDrawing, HeaderFooter::IMAGE_HEADER_RIGHT);
}
}
public function setImg($event,$pcell,$imgUrl,$imgHeight,$imgWidth,$imgOffsetX,$imgOffsetY)
{
$imgUrl = env('IMG_URL').$imgUrl;
$img = $imgUrl;
$img = imagecreatefrompng($img);
$width = imagesx($img);
$height = imagesy($img);
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$objDrawing->setName('图片');
$objDrawing->setDescription('图片');
$objDrawing->setPath($img);
$objDrawing->setHeight($imgHeight);
$objDrawing->setWidth($imgWidth);
$objDrawing->setOffsetX($imgOffsetX??0);
$objDrawing->setOffsetY($imgOffsetY??0);
$objDrawing->setCoordinates($pcell);
$objDrawing->setWorksheet($event->sheet->getDelegate());
}
public function setImg1($event,$pcell,$imgUrl,$imgHeight,$imgWidth,$imgOffsetX,$imgOffsetY)
{
$imgUrl .= "?x-oss-process=image/resize,m_pad,h_$imgHeight,w_$imgWidth,color_FFFFFF";
$imgUrl = env('IMG_URL').$imgUrl;
$im = @getimagesize($imgUrl);
if($im){
$img = '';
switch ($im[2])
{
case 1;
$img = @imagecreatefromgif($imgUrl);
break;
case 2;
$img = @imagecreatefromjpeg($imgUrl);
break;
case 3;
$img = @imagecreatefrompng($imgUrl);
break;
}
$image = imagecreatetruecolor($imgWidth, $imgHeight);
$color=imagecolorallocate($image,255,255,255);
imagecolortransparent($image,$color);
imagefill($image,0,0,$color);
imagecopyresampled($image, $img, 0, 0, 0, 0,$imgWidth,$imgHeight,$im[0], $im[1]);
$objDrawing = new MemoryDrawing();
$objDrawing->setName('Sample image');
$objDrawing->setDescription('Sample image');
$objDrawing->setImageResource($image);
$objDrawing->setWidth($imgWidth);
$objDrawing->setHeight($imgHeight);
$objDrawing->setOffsetX($imgOffsetX);
$objDrawing->setOffsetY($imgOffsetY);
$objDrawing->setRenderingFunction(MemoryDrawing::RENDERING_DEFAULT);
$objDrawing->setCoordinates($pcell);
$objDrawing->setWorksheet($event->sheet->getDelegate());
}
}
public function resizejpg($imgsrc,$imgdst,$imgwidth,$imgheight)
{
$imgsrc = env('IMG_URL').$imgsrc;
$arr = @getimagesize($imgsrc);
header("Content-type: image/jpg");
$imgWidth = $imgwidth;
$imgHeight = $imgheight;
$imgsrc = imagecreatefromjpeg($imgsrc);
$image = imagecreatetruecolor($imgWidth, $imgHeight);
imagecopyresampled($image, $imgsrc, 0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0], $arr[1]);
imagepng($image);
imagedestroy($image);
}
public function numToWord($num){
$chiNum = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$chiUni = array('','十', '百', '千', '万', '十', '百', '千', '亿');
$chiStr = '';
$num_str = (string)$num;
$count = strlen($num_str);
$last_flag = true;
$zero_flag = true;
$temp_num = null;
$chiStr = '';
if ($count == 2) {
$temp_num = $num_str[0];
$chiStr = $temp_num == 1 ? $chiUni[1] : $chiNum[$temp_num].$chiUni[1];
$temp_num = $num_str[1];
$chiStr .= $temp_num == 0 ? '' : $chiNum[$temp_num];
}else if($count > 2){
$index = 0;
for ($i=$count-1; $i >= 0 ; $i--) {
$temp_num = $num_str[$i];
if ($temp_num == 0) {
if (!$zero_flag && !$last_flag ) {
$chiStr = $chiNum[$temp_num]. $chiStr;
$last_flag = true;
}
if($index == 4 && $temp_num == 0){
$chiStr = "万".$chiStr;
}
}else{
if($i == 0 && $temp_num == 1 && $index == 1 && $index == 5){
$chiStr = $chiUni[$index%9] .$chiStr;
}else{
$chiStr = $chiNum[$temp_num].$chiUni[$index%9] .$chiStr;
}
$zero_flag = false;
$last_flag = false;
}
$index ++;
}
}else{
$chiStr = $chiNum[$num_str[0]];
}
return $chiStr;
}
}