工作上有个功能需要把报表导出,做完之后在这里码一下。
使用方法其实极其简单,下载好PHPExcel的第三方库之后直接引入,TP自带有的vendor方法就不错。

function excel($firstline,$data,$fieldname='excel'){
    vendor('phpexcel/PHPExcel');
    $phpexcel = new \PHPExcel();
    $phpexcel->getProperties()->setCreator("LYT")
      ->setLastModifiedBy("LYT")
      ->setTitle("数据EXCEL导出")
      ->setSubject("数据EXCEL导出")
      ->setDescription("备份数据")
      ->setKeywords("excel")
      ->setCategory("result file");
    $Letternum=65;
    foreach ($firstline as $k=>$v){
      $letternum = $Letternum++;
      $phpexcel->setActiveSheetIndex(0)
      ->setCellValue(chr($letternum).'1', $v);
    }
    $i=0;
    foreach($data as $k => $v){
    $i++;
    $num=$k+2;
    $Letternum=66;
    foreach ($v as $key=>$value){
    //如果这里用不到下面的时间戳转换和身份证处理(较长的数字会变成科学计数法)就可以把下方的代码删除了,而且后台做也会比较占用服务器资源
    //时间戳换成时间格式
    if(strpos($key,'time')!==false){
      $value=date('Y-m-d H:i:s',$value);
    };
    //处理身份证
    if(strpos($key,'certcode')!==false){
      $value=' '.$value;
    };
    //设置序号列,这个序号可以让前端自己循环加
    $phpexcel->setActiveSheetIndex(0)//
      ->setCellValue(chr(65).$num, $i);
	$letternum = $Letternum++;
   //将数据填入
    $phpexcel->setActiveSheetIndex(0)
	->setCellValue(chr($letternum).$num, $value);
		}
	}

	$phpexcel->getActiveSheet()->setTitle('LYT');
	$phpexcel->setActiveSheetIndex(0);
	header('Content-Type: applicationnd.ms-excel');
	header('Content-Disposition: attachment;filename="'.$fieldname.'.xls"');
	header('Cache-Control: max-age=0');
	$objWriter = \PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5');
//外部调用后进行下载
	$objWriter->save('php://output');
	exit;
}

这里只是分享了个简单的导出

分类: PHP

发表评论

电子邮件地址不会被公开。 必填项已用*标注