废话不多说,上代码
<?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;
}
}
}