TP5 导出Excel/PDF各种格式文件

PHPExcel gitub下载地址:https://github.com/ZAX96/PHPExcel
PHPExcel扩展文件没有用composer安装,直接下载文件
在这里插入图片描述
找到上图所在的文件夹,剪切或复制下Classes文件可重命名,此处用PHPExcel。然后将文件夹放在extend下
在这里插入图片描述
引入文件用如下代码,亲测可用,其余的引入要么不能用要么要修改文件比较麻烦

use think\facade\App;
require_once App::getRootPath().'/extend/PHPExcel/PHPExcel.php';

导出主要代码:

		$objPHPExcel = new \PHPExcel();
        $objPHPExcel->getProperties()  //获得文件属性对象,给下文提供设置资源
            ->setCreator("zax")   //设置文件的创建者
            ->setLastModifiedBy("zax")  //设置最后修改者
            ->setTitle("Office 2007 XLSX Test Document")    //设置标题
            ->setSubject("Office 2007 XLSX Test Document")  //设置主题
            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")    //设置备注
            ->setKeywords("office 2007 openxml php")    //设置标记
            ->setCategory("Test result file");  //设置类别
		//设置列宽,不用显示出来的是内容自适应  
		//getColumnDimension 可指定特殊列
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(40);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);

        //设置行高度
        $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);

        //set font size bold
        //字体样式设置 字体大小,加粗效果
        //getStyle  可填单字母表示所有列 也可以用英文:连接表示从A到B所有列
        $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(15);
        $objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getFont()->setBold(true);

		//文字对齐方式
		// HORIZONTAL_RIGHT 	水平方向上对齐  
		// HORIZONTAL_JUSTIFY	水平方向上两端对齐  
		// VERTICAL_CENTER	垂直方向上中间居中 
        $objPHPExcel->getActiveSheet()->getStyle('A:J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        //合并cell
        $objPHPExcel->getActiveSheet()->mergeCells('A1:J1');

        // set table header content
        $objPHPExcel->setActiveSheetIndex(0)     //设置第一个内置表(一个xls文件里可以有多个表)为活动的
            ->setCellValue('A1', '项目数据汇总  时间:'.date('Y-m-d H:i:s'))  //给表的单元格设置数据
            ->setCellValue('A2', '项目类型')    //数据格式可以为字符串  数字型  布尔型  公式
            ->setCellValue('B2', '客户名称')
            ->setCellValue('C2', '项目名称')
            ->setCellValue('D2', '签单时间')
            ->setCellValue('E2', '到期时间')
            ->setCellValue('F2', '市场价')
            ->setCellValue('G2', '成本折扣')
            ->setCellValue('H2', '成本价')
            ->setCellValue('I2', '认证类型')
            ->setCellValue('J2', '状态');


        // Miscellaneous glyphs, UTF-8
        for($i=0;$i<count($list);$i++){
    
    
            $objPHPExcel->getActiveSheet(0)->setCellValue('A'.($i+3), $list[$i]['category']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('B'.($i+3), $list[$i]['customer']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('C'.($i+3), $list[$i]['name']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('D'.($i+3), $list[$i]['sign_time']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('E'.($i+3), $list[$i]['end_time']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('F'.($i+3), $list[$i]['price']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('G'.($i+3), $list[$i]['discount']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('H'.($i+3), $list[$i]['amount']);
            if ($list[$i]['is_protect'] == 1){
    
    
                $list[$i]['is_protect']='保护';
            }else{
    
    
                $list[$i]['is_protect']='认证';
            }
            $objPHPExcel->getActiveSheet(0)->setCellValue('I'.($i+3), $list[$i]['is_protect']);
            if ($list[$i]['status'] == 1){
    
    
                $list[$i]['status']='等待审核';
            }elseif($list[$i]['status'] == 2){
    
    
                $list[$i]['status']='审核通过';
            }else{
    
    
                $list[$i]['status']='审核失败';
            }
            $objPHPExcel->getActiveSheet(0)->setCellValue('J'.($i+3), $list[$i]['status']);
            
        }

        //  sheet命名
        $objPHPExcel->getActiveSheet()->setTitle('项目表');

        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);

//         生成2003excel格式的xls文件
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="01simple.xls"');
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

//         生成2007excel格式的xlsx文件
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="01simple.xlsx"');
        header('Cache-Control: max-age=0');
        $IOFactory = new \PHPExcel_IOFactory();
        $objWriter = $IOFactory:: createWriter($objPHPExcel, 'Excel2007');

//         下载一个pdf文件--需要安装扩展文件tcpdf
//        header('Content-Type: application/pdf');
//        header('Content-Disposition: attachment;filename="01simple.pdf"');
//        header('Cache-Control: max-age=0');
//        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');

        // 生成一个pdf文件
//        $objWriter = $IOFactory::createWriter($objPHPExcel, 'PDF');
//        $objWriter->save('a.pdf');


        $objWriter->save('php://output');

补充样式设置
// CSV 文件
o b j W r i t e r = P H P E x c e l I O F a c t o r y : : c r e a t e W r i t e r ( objWriter = PHPExcel_IOFactory::createWriter( objWriter=PHPExcelIOFactory::createWriter(objPHPExcel, ‘CSV’)->setDelimiter(’,’ ) //设置分隔符
->setEnclosure(’"’ ) //设置包围符
->setLineEnding("\r\n" )//设置行分隔符
->setSheetIndex(0) //设置活动表
->save(str_replace(’.php’ , ‘.csv’ , FILE));

// HTML 文件
$objWriter = I O F a c t o r y : : c r e a t e W r i t e r ( IOFactory::createWriter( IOFactory::createWriter(objPHPExcel, ‘HTML’); //将$objPHPEcel对象转换成html格式的
$objWriter->setSheetIndex(0); //设置活动表
$objWriter->setImagesRoot(‘http://www.example.com’);
$objWriter->save(str_replace(’.php’, ‘.htm’, FILE)); //保存文件
// excel头参数
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename="项目表(’.date(‘Ymd-His’).’).xls"’); //日期为文件名后缀
header(‘Cache-Control: max-age=0’);

背景填充颜色
//设置填充的样式和背景色
$objPHPExcel->getActiveSheet()->getStyle( ‘A1:E1’)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle( ‘A1:E1’)->getFill()->getStartColor()->setARGB(‘FF808080’);

给单元格内容设置url超链接
$objActSheet->getCell(‘E26’)->getHyperlink()->setUrl( ‘http://www.phpexcel.net’); //超链接url地址
$objActSheet->getCell(‘E26’)->getHyperlink()->setTooltip( ‘Navigate to website’); //鼠标移上去连接提示信息

前端layui导出按钮

 <button type="button" lay-submit="" class="layui-btn layui-btn-normal" lay-filter="uploadImg" id="export">
        <i class="layui-icon"></i>导出本页数据</button>       

猜你喜欢

转载自blog.csdn.net/zax_96/article/details/112347896