thinkphp导出EXCEL数据可导出图片

工欲善其事必先利其器,已经有成熟的类咱们就不用重复造轮子了。直接COMPOSER进来。

Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

第一步

切换到网站根目录,CMD执行以下命令

composer require phpoffice/phpexcel

 运行如果报错OpenSSL之类的错, 请去掉php.ini中开启extension=php_openssl.dll扩展,去掉其前面的分号;

命令执行成功,你的类就会引用到endor\phpoffice\phpexcel

第二步

使用下PHPEXCEL库

use PHPExcel_IOFactory;
use PHPExcel;

第三步

编写导出方法

//导出手机报名数据
	public function excuser(){
		header("Content-type:text/html;charset=utf-8");
		$time = time();
		$xlsData = Db::table('表名')->where('条件')->select()->toArray();
		
		//这里引入PHPExcel文件注意路径修改
		vendor("PHPExcel");                                     
		vendor("PHPExcel.Writer.Excel5");
		vendor("PHPExcel.Writer.Excel2007");
		vendor("PHPExcel.IOFactory");
		$objExcel = new \PHPExcel();                   
		$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
		$objActSheet = $objExcel->getActiveSheet();
		$key = ord("A");
		$letter =explode(',',"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R");
		$arrHeader = array('ID','姓名','手机号','报名校区','校区地址','交费金额','退费课程','已上课时','剩余课时','退费金额','退费类型','退费原因','银行卡账号','持卡人姓名','开户支行','申请时间','订单号','银行卡');
		$lenth =  count($arrHeader);
		for($i = 0;$i < $lenth;$i++) {
		   $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
		};
		foreach($xlsData as $k=>$v){
		   $k +=2;
		   $objActSheet->setCellValue('A'.$k, $v['id']);
		   $objActSheet->setCellValue('B'.$k, $v['uname']);
		   $objActSheet->setCellValue('C'.$k, $v['uphone']);
		   $objActSheet->setCellValue('D'.$k, $v['schname']);
		   $objActSheet->setCellValue('E'.$k, $v['schaddr']);
		   $objActSheet->setCellValue('F'.$k, $v['prefee']);
		   $objActSheet->setCellValue('G'.$k, $v['course']);
		   $objActSheet->setCellValue('H'.$k, $v['fee1']);
		   $objActSheet->setCellValue('I'.$k, $v['fee2']);
		   $objActSheet->setCellValue('J'.$k, $v['refee']);
		   $objActSheet->setCellValue('K'.$k, $v['feetype']);
		   $objActSheet->setCellValue('L'.$k, $v['reason']);
		   $objActSheet->setCellValue('M'.$k, $v['carno']);
		   $objActSheet->setCellValue('N'.$k, $v['carname']);
		   $objActSheet->setCellValue('O'.$k, $v['carhang']);
		   $objActSheet->setCellValue('P'.$k, $v['addtime']);
		   $objActSheet->setCellValue('Q'.$k, $v['orderid']);
		    //进行图片处理
		    if ($v['carpic1']){
			   $objDrawing = new \PHPExcel_Worksheet_Drawing();
			   $objDrawing->setPath('.'.$v['carpic1']);
			   $objDrawing->setHeight(80);
			   $objDrawing->setWidth(80);
			   $objDrawing->setCoordinates('R'.$k);
			   $objDrawing->setOffsetX(0);
			   $objDrawing->setOffsetY(0);
			   $objDrawing->setWorksheet($objExcel->getActiveSheet());
		    }
		}
		$width = array(20,20,20,20,40,60,80,100);
		//设置表格的宽度
		$objActSheet->getColumnDimension('A')->setWidth($width[0]);
		$objActSheet->getColumnDimension('B')->setWidth($width[1]);
		$objActSheet->getColumnDimension('C')->setWidth($width[2]);
		$objActSheet->getColumnDimension('D')->setWidth($width[3]);
		$objActSheet->getColumnDimension('E')->setWidth($width[4]);

		$outfile = "导出的表名.xls";
		ob_end_clean();
		header("Content-Type: application/force-download");
		header("Content-Type: application/octet-stream");
		header("Content-Type: application/download");
		header('Content-Disposition:inline;filename="'.$outfile.'"');
		header("Content-Transfer-Encoding: binary");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Pragma: no-cache");
		$objWriter->save('php://output');
	}	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值