phpexcel的使用

其实phpexcel这种使用广泛的类库的引用都是比较简单的,使用起来就是下载类库-》引用类-》和普通类一样实例化使用,但是属性和方法的说明还是要查资料的。所以就在这里写下了,慢慢补充。

1,下载类库

https://github.com/PHPOffice/PHPExcel

东西很多,核心是

,一般都是这样,文件夹中是一堆文件,外面一个文件算是入口文件,就引用并实例化外面这个类文件就好了

2,引用,原生自然是include,required或namaspace,

我用的是tp3的框架,把文件放到library->Vendor下,使用时只要vendor('PHPExcel.PHPExcel');就可以引用了

实例化$phpexcel = new \PHPExcel();

3,使用

 //设置excel属性
        $phpexcel->getProperties()
        ->setCreator("Maarten Balliauw")
        ->setLastModifiedBy("Maarten Balliauw")
        ->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");
        //设置sheet表名
        $phpexcel->getActiveSheet()->setTitle('订单导出表');
       //设置表数据
        //批量直接导出
        //$phpexcel->getActiveSheet()->fromArray($data);
       //设置第一行的标题
        $phpexcel->setActiveSheetIndex(0)->setCellValue('A1', '订单编号')->setCellValue('B1', '订单名称')
        ->setCellValue('C1', '订单价格')->setCellValue('D1', '联系人')->setCellValue('E1', '联系号码')
        ->setCellValue('F1', '下单时间')->setCellValue('G1', '下单ip')->setCellValue('H1', '订单状态')
        ->setCellValue('I1', '用户备注')->setCellValue('J1', '管理员备注');
        //循环设置单元格的数据
        foreach ($data as $k=>$v){
            $num=$k+2;
            $time=date('Y-m-d H:i',$v['create_time']);
         
            //设置文本格式
            $str=\PHPExcel_Cell_DataType::TYPE_STRING;
            $phpexcel->setActiveSheetIndex(0)
            ->setCellValueExplicit('A'.$num, $v['oid'],$str)
            ->setCellValue('B'.$num, $v['name'])
            ->setCellValueExplicit('C'.$num, $v['tprice'],$str)
            ->setCellValue('D'.$num, $v['uname'])
            ->setCellValueExplicit('E'.$num, $v['utel'],$str)
            ->setCellValueExplicit('F'.$num, $time,$str)
            ->setCellValueExplicit('G'.$num, $v['ip'],$str)
            ->setCellValue('H'.$num, $status)
            ->setCellValue('I'.$num, $v['desc1'])
            ->setCellValue('J'.$num, $v['desc2']);
        }
        //在浏览器输出,就是为了弹出一个下载框
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=$filename");
        header('Cache-Control: max-age=0');
        header('Cache-Control: max-age=1');
        header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
        header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header ('Pragma: public'); // HTTP/1.0
       
        $objwriter = \PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5');
        $objwriter->save('php://output');

4,属性方法说明

设置单元格数据

setCellValue('B'.$num, $v['name'])

指定单元格的文本格式,否则大数字就会被转出科学计数法了

这是文本格式

$str=\PHPExcel_Cell_DataType::TYPE_STRING;

setCellValueExplicit('E'.$num, $v['utel'],$str)

设置单元格大小?还没试过,以后补充

插入图片和设置单元格宽高

以上是2017年10份写的,用的是tp3.2,现在新项目用了tp5框架,要导出产品列表和出库入库单,对phpexcel的使用要更细致了,增加了导出图片和设置单元格样式

tp5使用惰性加载,基本每用到一个类都需要引入命名空间,

use PHPExcel_IOFactory;
use PHPExcel;
use PHPExcel_Cell_DataType;
use PHPExcel_Style_Border;
use PHPExcel_Worksheet_Drawing;
use PHPExcel_Style_Alignment;

直接上代码

        ini_set('max_execution_time', '0');
        $title='产品规格表'.date('Ymd');
        $filename=$title.'.xls';
        $phpexcel = new PHPExcel();
        /*实例化插入图片类*/
        $objDrawing = new PHPExcel_Worksheet_Drawing();
        $dir=getcwd().'/upload/';
        //设置文本格式
        $str=PHPExcel_Cell_DataType::TYPE_STRING;
        
        //设置第一个sheet
        $phpexcel->setActiveSheetIndex(0);
        $sheet= $phpexcel->getActiveSheet();
        //设置sheet表名
        $sheet->setTitle($title);
        //A18到E22为对角的整个长方形区域合并
        //$sheet->mergeCells('A18:E22');
        // 水平居中(位置很重要,建议在最初始位置)
        //$sheet->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $sheet->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         
        //垂直居中
        $sheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //自动换行
        $sheet->getDefaultStyle()->getAlignment()->setWrapText(true);
        // 所有单元格默认高度
        $sheet->getDefaultRowDimension()->setRowHeight(180);
        $sheet->getDefaultColumnDimension()->setWidth(10);
        //第一行
        $sheet->getRowDimension('1')->setRowHeight(40);
        //序号,单位,数量宽度设小以节约空间
        $sheet->getColumnDimension('B')->setWidth(15);
        $sheet->getColumnDimension('C')->setWidth(15);
        $sheet->getColumnDimension('D')->setWidth(15);
        $sheet->getColumnDimension('E')->setWidth(32);
        $sheet->getColumnDimension('F')->setWidth(30);
        $sheet->getColumnDimension('G')->setWidth(5);
      
        //设置第一行
        $i=1;
        
        
        //设置入库记录表头
        
        $sheet
        ->setCellValue('A'.$i, 'ID')
        ->setCellValue('B'.$i, '产品分类')
        ->setCellValue('C'.$i, '条码编号')
        ->setCellValue('D'.$i, '自编号')
        ->setCellValue('E'.$i, '产品图片')
        ->setCellValue('F'.$i, '产品名称--规格')
        ->setCellValue('G'.$i, '单位')
        ->setCellValue('H'.$i, '参考进价')
        ->setCellValue('I'.$i, '参考售价');
        foreach($list as $k=>$v){
            $i++;
            
            $sheet
            ->setCellValueExplicit('A'.$i, $v['id'],$str)
            ->setCellValueExplicit('B'.$i, $v['cname'],$str)
            ->setCellValueExplicit('C'.$i, $v['sn'],$str)
            ->setCellValueExplicit('D'.$i, $v['sn0'],$str)
            ->setCellValueExplicit('F'.$i, $v['gname'].'--'.$v['attr'],$str)
            ->setCellValueExplicit('G'.$i, $v['unit'],$str)
            ->setCellValueExplicit('H'.$i, '¥'.$v['inprice'],$str)
            ->setCellValueExplicit('I'.$i, '¥'.$v['outprice'],$str);
            if(is_file($dir.$v['pic'])){
                
           
            /*设置图片路径 切记:只能是本地图片*/
            $objDrawing = new PHPExcel_Worksheet_Drawing();
            $objDrawing->setPath($dir.$v['pic']);
            /*设置图片高度*/
            
            $objDrawing->setHeight(200);//照片高度
            $objDrawing->setWidth(200); //照片宽度
           
            /*设置图片要插入的单元格*/
            $objDrawing->setCoordinates('E'.$i);
            /*设置图片所在单元格的格式*/
            $objDrawing->setOffsetX(10);
            $objDrawing->setOffsetY(10);
            $objDrawing->setRotation(0);
            $objDrawing->setWorksheet($sheet);
             }
        }
        //***********************画出单元格边框*****************************
        $styleArray = array(
            'borders' => array(
                'allborders' => array(
                    //'style' => PHPExcel_Style_Border::BORDER_THICK,//边框是粗的
                    'style' => PHPExcel_Style_Border::BORDER_THIN,//细边框
                    //'color' => array('argb' => 'FFFF0000'),
                ),
            ),
        );
        $sheet->getStyle('A1:I'.$i)->applyFromArray($styleArray);
        
        //在浏览器输出
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=$filename");
        header('Cache-Control: max-age=0');
        header('Cache-Control: max-age=1');
        
        header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header ('Pragma: public'); // HTTP/1.0
        
        $objwriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5');
        $objwriter->save('php://output');
        exit;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值