Commit 975f8a28 authored by yinxiaoling's avatar yinxiaoling

commonservice整理

parent fff8fede
...@@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Log; ...@@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Log;
use App\Models\StrategyExcel; use App\Models\StrategyExcel;
use App\Models\StrategyTask; use App\Models\StrategyTask;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use App\Service\CommonService;
//use App\Http\Requests\StrategySetCreateRequest; //use App\Http\Requests\StrategySetCreateRequest;
class StrategySetController extends Controller class StrategySetController extends Controller
...@@ -144,15 +145,14 @@ class StrategySetController extends Controller ...@@ -144,15 +145,14 @@ class StrategySetController extends Controller
} }
//下载模板及下载导入失败excel数据 //下载模板及下载导入失败excel数据
public function downloadModel(Request $request,StrategyService $StrategyService){ public function downloadModel(Request $request,CommonService $CommonService){
$excelName = "策略任务数据导入模板"; $excelName = "策略任务数据导入模板";
$datas[0][0]= "姓名"; $datas[0][0]= "姓名";
$datas[0][1]= "*手机号码"; $datas[0][1]= "*手机号码";
$datas[0][2]= "值班日期"; $datas[0][2]= "值班日期";
$datas[1] = ['小a',13112345678,'2020/5/20']; $datas[1] = ['小a',13112345678,'2020/5/20'];
//$StrategyService->storeExcelStyle($excelName, $datas,3,'',1); $CommonService->exportPHPExcel($excelName, $datas);
$StrategyService->exportPHPExcel($excelName, $datas);
} }
public function downloadFailExcel(Request $request){ public function downloadFailExcel(Request $request){
......
<?php
namespace App\Service;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Log;
class CommonService
{
//保存内容到excel文件并下载,$exportType excel文件操作类型 0存储数据直接保存, 1直接导出数据 , 2保存并导出数据
public function storeExcelStyle($excelName,$datas,$endLen='',$path='',$exportType=0){
try{
$arr = range('A','Z');
if (!empty($endLen)){
$endLen = $endLen - 1;
if(isset($arr[$endLen])){
$arr = range('A',$arr[$endLen]);
}
}
$e = Excel::create(iconv('UTF-8', 'GB2312', $excelName),function($excel) use ($datas,$arr){
$excel->sheet('score', function($sheet) use ($datas,$arr){
$col =array();
$sheet->rows($datas);
foreach($arr as $v){
$col[$v]=12;
}
$sheet->setWidth($col);
foreach ($arr as $k=> $v){
$objRichText = new \PHPExcel_RichText();
if(!empty($datas[0][$k])){
if (strpos($datas[0][$k], '*') === 0){
$objPayable = $objRichText->createTextRun('*');
$objPayable->getFont()->setColor( new \PHPExcel_Style_Color( \PHPExcel_Style_Color::COLOR_RED ) );//设置颜色
}
$objRichText->createText(ltrim($datas[0][$k],'*'));
$sheet->setCellValue($arr[$k].'1',$objRichText);
}
}
});
});
if ($exportType == 1){
if (empty($path)){//默认路径storage/exports
$e->export('xlsx');
}else{//自定义路径 storage/$path
$e->export('xlsx', storage_path($path));
}
}elseif ($exportType == 2){
if (empty($path)){//默认路径storage/exports
$e->store('xlsx')->export('xlsx');
}else{//自定义路径 storage/$path
$e->store('xlsx', storage_path($path))->export('xlsx', storage_path($path));
}
}else{
if (empty($path)){//默认路径storage/exports
$e->store('xlsx');
}else{//自定义路径 storage/$path
$e->store('xlsx', storage_path($path));
}
}
return true;
}catch(\Exception $e){
Log::channel('api')->error($e->getFile().'-'.$e->getLine().'-'.$e->getMessage());
return false;
}
}
//保存内容到excel文件,第一行*号红色,$firstRed为1则处理第一行红色*号,0不处理*
public function exportPHPExcel($excelName,$datas,$firstRed=1){
try{
$datas0 = $datas[0];
$objPHPExcel = new \PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
//$objPHPExcel->getActiveSheet()->getStyle('B')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$capitalArr = range('A','Z');
if(count($datas0)>0 && $firstRed == 1){
foreach($datas0 as $key => $value){
$objRichText = new \PHPExcel_RichText();
if (strpos($value, '*') === 0){
$objPayable = $objRichText->createTextRun('*');
$objPayable->getFont()->setColor( new \PHPExcel_Style_Color( \PHPExcel_Style_Color::COLOR_RED ) );//设置颜色
}
$objRichText->createText(ltrim($value,'*'));
$sheet = $key < 26 ? $capitalArr[$key] : 'A'.$capitalArr[$key-25];
$objPHPExcel->getActiveSheet()->setCellValue($sheet.'1', $objRichText);
$objPHPExcel->getActiveSheet()->getColumnDimension($sheet)->setWidth(12);
}
}
foreach ($datas as $kdata=>$vdata){
if ($kdata >= $firstRed){
foreach ($vdata as $key=>$value){
$sheet = $key < 26 ? $capitalArr[$key] : 'A'.$capitalArr[$key-25];
if ($key == 0){ //第一列
$objPHPExcel->getActiveSheet()->setCellValueExplicit($sheet.($kdata+1), $value,\PHPExcel_Cell_DataType::TYPE_STRING);
}elseif ($key == 1){//第二列
$objPHPExcel->getActiveSheet()->setCellValueExplicit($sheet.($kdata+1), $value,\PHPExcel_Cell_DataType::TYPE_NUMERIC);
}else{
$objPHPExcel->getActiveSheet()->setCellValue($sheet.($kdata+1), $value);
}
}
}
}
//$PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
//header('Content-Type: application/vnd.ms-excel; charset=utf-8');
//header('Content-Disposition: attachment;filename="'.$excelName.'.xls"');
$PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_end_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$excelName.'.xlsx"');
header('Cache-Control: max-age=0');//禁止缓存
$PHPWriter->save("php://output");
exit;
}catch(\Exception $e){
Log::channel('api')->info('下载失败:'.$e->getFile().'-'.$e->getLine().'-'.$e->getMessage());
return false;
}
}
}
...@@ -104,8 +104,9 @@ class StrategyService ...@@ -104,8 +104,9 @@ class StrategyService
if ($failTotal > 0){//把导出错误数据存入excel表格中供下载 if ($failTotal > 0){//把导出错误数据存入excel表格中供下载
$failDataTitle = ['姓名','*手机号码','值班日期','失败原因']; $failDataTitle = ['姓名','*手机号码','值班日期','失败原因'];
array_unshift($failData, $failDataTitle); array_unshift($failData, $failDataTitle);
$failExcelName = "importfaildata_".date('YmdHis'); $failExcelName = "importfaildata_".date('YmdHis');
$failFile = $this->storeExcelStyle($failExcelName, $failData,'','import'); $CommonService = new CommonService();
$failFile = $CommonService->storeExcelStyle($failExcelName, $failData,'','import');
//$failDataFile = $failExcelName.'.xlsx'; //$failDataFile = $failExcelName.'.xlsx';
if ($failFile){ if ($failFile){
$failDataFile = $failExcelName; $failDataFile = $failExcelName;
...@@ -116,127 +117,7 @@ class StrategyService ...@@ -116,127 +117,7 @@ class StrategyService
return compact('successData','total','failData','failTotal','successTotal','failDataFile'); return compact('successData','total','failData','failTotal','successTotal','failDataFile');
} }
//保存内容到excel文件并下载,$exportType excel文件操作类型 0存储数据直接保存, 1直接导出数据 , 2保存并导出数据
public function storeExcelStyle($excelName,$datas,$endLen='',$path='',$exportType=0){
try{
$arr = range('A','Z');
if (!empty($endLen)){
$endLen = $endLen - 1;
if(isset($arr[$endLen])){
$arr = range('A',$arr[$endLen]);
}
}
$e = Excel::create(iconv('UTF-8', 'GB2312', $excelName),function($excel) use ($datas,$arr){
$excel->sheet('score', function($sheet) use ($datas,$arr){
$col =array();
$sheet->rows($datas);
foreach($arr as $v){
$col[$v]=12;
}
$sheet->setWidth($col);
foreach ($arr as $k=> $v){
$objRichText = new \PHPExcel_RichText();
if(!empty($datas[0][$k])){
if (strpos($datas[0][$k], '*') === 0){
$objPayable = $objRichText->createTextRun('*');
$objPayable->getFont()->setColor( new \PHPExcel_Style_Color( \PHPExcel_Style_Color::COLOR_RED ) );//设置颜色
}
$objRichText->createText(ltrim($datas[0][$k],'*'));
$sheet->setCellValue($arr[$k].'1',$objRichText);
}
}
});
});
if ($exportType == 1){
if (empty($path)){//默认路径storage/exports
$e->export('xlsx');
}else{//自定义路径 storage/$path
$e->export('xlsx', storage_path($path));
}
}elseif ($exportType == 2){
if (empty($path)){//默认路径storage/exports
$e->store('xlsx')->export('xlsx');
}else{//自定义路径 storage/$path
$e->store('xlsx', storage_path($path))->export('xlsx', storage_path($path));
}
}else{
if (empty($path)){//默认路径storage/exports
$e->store('xlsx');
}else{//自定义路径 storage/$path
$e->store('xlsx', storage_path($path));
}
}
return true;
}catch(\Exception $e){
Log::channel('api')->error($e->getFile().'-'.$e->getLine().'-'.$e->getMessage());
return false;
}
}
//保存内容到excel文件,第一行*号红色,$firstRed为1则处理第一行红色*号,0不处理*
public function exportPHPExcel($excelName,$datas,$firstRed=1){
try{
$datas0 = $datas[0];
$objPHPExcel = new \PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
//$objPHPExcel->getActiveSheet()->getStyle('B')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$capitalArr = range('A','Z');
if(count($datas0)>0 && $firstRed == 1){
foreach($datas0 as $key => $value){
$objRichText = new \PHPExcel_RichText();
if (strpos($value, '*') === 0){
$objPayable = $objRichText->createTextRun('*');
$objPayable->getFont()->setColor( new \PHPExcel_Style_Color( \PHPExcel_Style_Color::COLOR_RED ) );//设置颜色
}
$objRichText->createText(ltrim($value,'*'));
$sheet = $key < 26 ? $capitalArr[$key] : 'A'.$capitalArr[$key-25];
$objPHPExcel->getActiveSheet()->setCellValue($sheet.'1', $objRichText);
$objPHPExcel->getActiveSheet()->getColumnDimension($sheet)->setWidth(12);
}
}
foreach ($datas as $kdata=>$vdata){
if ($kdata >= $firstRed){
foreach ($vdata as $key=>$value){
$sheet = $key < 26 ? $capitalArr[$key] : 'A'.$capitalArr[$key-25];
if ($key == 0){ //第一列
$objPHPExcel->getActiveSheet()->setCellValueExplicit($sheet.($kdata+1), $value,\PHPExcel_Cell_DataType::TYPE_STRING);
}elseif ($key == 1){//第二列
$objPHPExcel->getActiveSheet()->setCellValueExplicit($sheet.($kdata+1), $value,\PHPExcel_Cell_DataType::TYPE_NUMERIC);
}else{
$objPHPExcel->getActiveSheet()->setCellValue($sheet.($kdata+1), $value);
}
}
}
}
//$PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
//header('Content-Type: application/vnd.ms-excel; charset=utf-8');
//header('Content-Disposition: attachment;filename="'.$excelName.'.xls"');
$PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_end_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$excelName.'.xlsx"');
header('Cache-Control: max-age=0');//禁止缓存
$PHPWriter->save("php://output");
exit;
}catch(\Exception $e){
Log::channel('api')->info('下载失败:'.$e->getFile().'-'.$e->getLine().'-'.$e->getMessage());
return false;
}
}
//添加策略处理excel数据入库 //添加策略处理excel数据入库
public function insertStrategyExcel($strategySn,$data){ public function insertStrategyExcel($strategySn,$data){
if (count($data) > 0){ if (count($data) > 0){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment