phpExcel用法

一、简介

PHPExcel是一个处理Excel,CVS文件的开源框架,但不幸的是PHPExcel官方已不再维护了这个项目了,官方团队在github上又起了一个新项目,叫PhpSpreadsheet。有兴趣的可以去看下。

二、优缺点

优点:
  • 开源
  • 功能非常丰富,API非常多,可以使用它来读取、写入不同格式的电子表格,这也是PHP至今最通用的Excel处理工具
缺点:
  • 特别占内存,对大批量的表格数据几乎会让人累觉不爱,处理速度非常慢
  • PHPExcel官方已不再维护了这个项目

三、常用方法

require_once './phpexcel/PHPExcel.php';   //引用phpexcel文件
/* 创建对象 */
$objPHPExcel = new PHPExcel(); //首先创建一个新的对象  PHPExcel object
/* 对表格操作 */
//创建新的内置表
$objPHPExcel->createSheet();//创建新的内置表
$objPHPExcel->setActiveSheetIndex(0); //设置第一个内置表(一个xls文件里可以有多个表)为活动的
$objActiveSheet = $objPHPExcel->getActiveSheet();//得到当前活动的表
$objActiveSheet ->setTitle('三年二班'); //给当前活动的表设置名称 
$objActiveSheet ->setCellValue( 'A1', 'Hello' ); //给表的单元格设置数据,可以连贯操作
$objActiveSheet ->getCell('A1') ->setValue('Hello'); //与上一行作用相同
$objActiveSheet -> fromArray($data,null,'A2'); //从数组赋值,
//第一个参数是要负责的二维数组,如$data = array( array(NULL, 2010, 2011, 2012), array('Q1', 12, 15, 21), array('Q2', 56, 73, 86), array('Q3', 52, 61, 69), array('Q4', 30, 32, 0));
//第二个参数讲什么设置成空白单元格,默认为null(@param mixed $nullValue Value in source array that stands for blank cell)
//第三个参数是从哪个单元格开始填充

//代码示例
    /**
     * 导出到excel
     * @param $data
     * @param $outfilename
     * @param $classname
     */
    public function exportExcel($data, $outfilename, $classname){
        vendor('Excel.PHPExcel');
        //创建PHPExcel对象
        $objPHPExcel = new PHPExcel();
        $objPHPExcel -> setActiveSheetIndex(0); //设置第一个内置表为活动的
        $objActiveSheet = $objPHPExcel->getActiveSheet();
        //获取总人数
        $count = isset($data['data']) ? count($data['data']) : 0;
        $title = $classname.' 共'.$count.'人';
        $objActiveSheet -> setTitle($title);
        for($i=0;$i<$data['total_count'];$i++){
            $objActiveSheet->getColumnDimensionByColumn($i)->setWidth(15); //设置列宽带
        }
        //第一行数据填充
        if(isset($data['row1'])){
            foreach ($data['row1'] as $val){
                $pColumn1 = $val['index'];
                if($val['count'] > 1){
                    $pColumn2 = $pColumn1 + $val['count'] - 1;
                    $objActiveSheet->mergeCellsByColumnAndRow($pColumn1,1,$pColumn2,1)->setCellValueByColumnAndRow($pColumn1,1,$val['catename']);
                }else{
                    $objActiveSheet -> setCellValueByColumnAndRow($pColumn1, 1, $val['catename']);//通过行列值来给单元格赋值
                }
                $objActiveSheet->getStyleByColumnAndRow($pColumn1,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置对齐方式
            }
        }
        //第二行数据填充
        if(isset($data['row2'])){
            $objActiveSheet -> fromArray($data['row2'],null,'A2');
        }
        //用户行数据填充
        if(isset($data['data'])){
            $objActiveSheet -> fromArray($data['data'], null,'A3');
        }
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        //header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        //header("Content-Disposition: attachment; filename=\"$outfilename\"");
        //header('Cache-Control: max-age=0');
        //$objWriter->save('php://output')
        $objWriter->save($outfilename); //直接保存到服务器上git
    }

你可能感兴趣的:(phpExcel用法)