php ajax export function

Not much nonsense, on the code

<?php


namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Db;
class Tools
{
//	// 保存全局实例
//	private  $instance=null;
//	// 自定义配置参数
	protected $setting=[];
//	// 导出参数
	protected $exportsSetting=[];
	public function __construct ($setting=[],$exportsSetting=[]){
		$this->setting = $setting;
		$this->exportsSetting = $exportsSetting;
	}


//	/**
//	 * 工具类唯一入口
//	 * @return Tools|null
//	 */
//	public static function getInstance(){
//		if (!(self::$instance instanceof self)){
//			self::$instance = new self();
//		}
//		return self::$instance;
//	}


	/**
	 * AJAX导出
	 * @param  string $expTitle 	表格标题
	 * @param  string $expFileName 导出文件名
	 * @param  string $expFileType 导出文件后缀:xls,csv
	 * @param  array  $expHeadArr 	导出文件列名
	 * @param  array  $expDataList 导出数据
	 * @return string|string[]
	 * @throws \PHPExcel_Exception
	 * @throws \PHPExcel_Reader_Exception
	 * @throws \PHPExcel_Writer_Exception
	 */
	static function ajax_excel_prot($expFileName,$expDataList,$expHeadArr,$expFileType='xlsx'){
		$time = date('YmdHis',time());
		$expFileName .= "_".$time.".".$expFileType;
		//设置保存路径
		$basePath = request()->env('ROOT_PATH').'uploads';
		$baseUrl  = DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, ['excel',date('Y-m-d',time())]). DIRECTORY_SEPARATOR;
		$path = $basePath.$baseUrl;
		//路径不存在则创建路径
		if(!is_dir($path)){
			mkdir($path, 0777, true);
		}
		$path = $path.$expFileName;


		//这里引入PHPExcel文件注意路径修改
		vendor("PHPExcel");
		vendor("PHPExcel.Writer.Excel5");
		vendor("PHPExcel.Writer.Excel2007");
		vendor("PHPExcel.IOFactory");
		$objPHPExcel = new \PHPExcel();
		//设置Excel属性
		$objPHPExcel->getProperties()
			->setCreator("Maarten Balliauw")					//创建人
			->setLastModifiedBy("Maarten Balliauw")				//最后修改人
			->setTitle("Office 2007 XLSX Test Document")		//设置标题
			->setSubject("Office 2007 XLSX Test Document")		//设置主题
			->setDescription("Test document ")					//设置备注
			->setKeywords( "office 2007 openxml php")			//设置关键字
			->setCategory( "Test result file");					//设置类别
		//设置Excel样式
		//设置第一行(标题)合并单元格
		$key = ord('A');
		//设置表头信息
		foreach($expHeadArr as $head){
			$colum = chr($key);
			$objPHPExcel->getActiveSheet()->setCellValue($colum.'1',$head);
			$objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  //表头文字居中
			$objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setSize(12);
			$objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setBold(true);

			$key += 1;
		}
		//写入数据
		$colum = 2;
		foreach($expDataList as $key =>$row){
			//行写入
			$span = ord("A");
			foreach($expDataList[$key] as $keyName => $value){
				//列写入
				$objPHPExcel->getActiveSheet()->setCellValue(chr($span).$colum,$value);
				$objPHPExcel->getActiveSheet()->getStyle(chr($span).$colum)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);  //文字左对齐中
				$objPHPExcel->getActiveSheet()->getColumnDimension(chr($span))->setWidth(17);//设置宽度
				$span ++;
			}
			$colum ++;
		}
		$objPHPExcel->setActiveSheetIndex(0);
		ob_end_clean();//清除缓冲区,避免乱码
		//"Excel2007"生成2007版本的xlsx,"Excel5"生成2003版本的xls
		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
		//保存路径
		$objWriter->save($path);
		$filePath = str_replace('\\','/',$path);
		$filePaths = $_SERVER['HTTP_ORIGIN'].'/'.$filePath;
		return ['code'=>1,'msg'=>'导出成功!','path'=>$filePaths,'delpath'=>$filePath];
	}

	public function del_file(){
		$return_arr =['code'=>1,'msg'=>''];
		$param = input('path');
		if (!$param){
			$return_arr['code']=2;
			$return_arr['msg']='导出成功,删除失败!';
			return $return_arr;
		}
		$path = $param;
		if (file_exists($path)) {
			unlink($path);//删除文件
			$return_arr['msg']='导出成功!';
			return $return_arr;
		}else{
			$return_arr['code']=2;
			$return_arr['msg']='导出成功,删除失败!';
			return $return_arr;
		}

	}



}

 

Guess you like

Origin blog.csdn.net/xiaoyun888_/article/details/109594252