PHPExcel操作类的使用——导出/导入excel

  最近在工作中,有需求是要导出项目中的订单,但是再网上查了资料,发现比较全面的PHPExcel类使用说明很少,即使有写的也不全面,不易懂。下面我就把我工作中总结的PHPExcel操作的一些有用的方法写在下面:

  前提是要去网上下载PHPExcel操作类,把Classes文件夹复制到项目中,其它不需要也可以!

<?php 

    include './PHPExcel/PHPExcel.php';
    include './PHPExcel/PHPExcel/Writer/Excel5.php';

    $objPHPExcel = new PHPExcel();
    /*
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="lgq.xls"');
    header('Cache-Control: max-age=0');

    //IE9加入下面代码
    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 = new PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter->save('php://output');


    //设置标题、题目
    $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
    $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");

    设置当前的sheet
    $objPHPExcel->setActiveSheetIndex(0);

    设置sheet的name
    $objPHPExcel->getActiveSheet()->setTitle('Simple');

    设置单元格的值
    $objPHPExcel->getActiveSheet()->setCellValue('A1', 'String');
    合并单元格
    $objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
    分离单元格
    $objPHPExcel->getActiveSheet()->unmergeCells('A28:B28');
    设置宽width
    Set column widths
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
    // 设置单元格高度
    所有单元格默认高度
    $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);
    第一行的默认高度
    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
    设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB("0017C405");*/
    

    $datas = array(
     array('王城', '男', '18', '1997-03-13', '18948348924'),
     array('李飞虹', '男', '21', '1994-06-13', '159481838924'),
     array('王芸', '女', '18', '1997-03-13', '18648313924'),
     array('郭瑞', '男', '17', '1998-04-13', '15543248924'),
     array('李晓霞', '女', '19', '1996-06-13', '18748348924'),
    );


    $objPHPExcel->getProperties()->setCreator("test");
    //最后修改人
    $objPHPExcel->getProperties()->setLastModifiedBy("test123");
    //标题
    $objPHPExcel->getProperties()->setTitle("test1234");
    //题目
    $objPHPExcel->getProperties()->setSubject("test456");
    //描述
    $objPHPExcel->getProperties()->setDescription("test567");
    //关键字
    $objPHPExcel->getProperties()->setKeywords("test789");
    //种类
    $objPHPExcel->getProperties()->setCategory("testkind");
    //标题
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '名字')->setCellValue('B1', '性别')->setCellValue('C1', '年龄')->setCellValue('D1', '出生日期')->setCellValue('E1', '电话号码');



    // Rename worksheet
    $objPHPExcel->getActiveSheet()->setTitle('Phpmarker-' . date('Y-m-d'));
      
    // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    $objPHPExcel->setActiveSheetIndex(0);
    //所有单元格
    $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);
    //冻结窗口
    $objPHPExcel->getActiveSheet()->freezePane('A2');

    //循环获取数据
    $i = 2;
    foreach($datas as $data){
        //文本对齐方式
         $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[0])->getStyle('A'.$i)->getAlignment()->setHorizontal(    PHPExcel_Style_Alignment::VERTICAL_CENTER);

         $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[1]);
         $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[2]);
         
         //设置填充颜色
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB("0017C405");


         //设置文本格式为字符串
         $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'. $i, $data[3],PHPExcel_Cell_DataType::TYPE_STRING);

         //设置单元格格式
         $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getNumberFormat()->setFormatCode("@");
         
         // 设置文本格式
         $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'. $i, $data[4],PHPExcel_Cell_DataType::TYPE_STRING);
         $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setWrapText(true);
         $i++;
        if($i>count($datas)+2){
             $i=2;
        }
    }



    $objActSheet = $objPHPExcel->getActiveSheet();
        
    // 设置CELL填充颜色
    $cell_fill = array(
      'A1',
      'B1',
      'C1',
      'D1',
      'E1',
    );
    foreach($cell_fill as $cell_fill_val){

    //得到每个单元格
     $cellstyle = $objActSheet->getStyle($cell_fill_val);

     // background
     // $cellstyle->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('fafa00');
     
     // 设置左对齐和垂直居中
     $cellstyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT)->setVertical(    PHPExcel_Style_Alignment::VERTICAL_CENTER);


     // font字体大小、粗
     $cellstyle->getFont()->setSize(12)->setBold(true);

     // border颜色
     $cellstyle->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('    FFFF0000');
     $cellstyle->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('    FFFF0000');
     $cellstyle->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('    FFFF0000');
     $cellstyle->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('    FFFF0000');
    }


    //第一行的默认高度
    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);

    //设置各行的宽度
    $objActSheet->getColumnDimension('A')->setWidth(18.5);
    $objActSheet->getColumnDimension('B')->setWidth(23.5);
    $objActSheet->getColumnDimension('C')->setWidth(12);
    $objActSheet->getColumnDimension('D')->setWidth(12);
    $objActSheet->getColumnDimension('E')->setWidth(12);
    
    //加上这些就告诉流浪器要下载xls文件
    $filename = '2015030423';
    ob_end_clean();//清除缓冲区,避免乱码 
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
    header('Cache-Control: max-age=0');
    // If you're serving to IE 9, then the following may be needed
    header('Cache-Control: max-age=1');
    // If you're serving to IE over SSL, then the following may be needed
    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 = new PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter->save('php://output');
    //到处中文时,会出现乱码,记得在Header 之前加 ob_end_clean() 清除缓冲区,避免乱码
?>

  “导入”就简单了:具体打开下载的类面:Documentation\Examples\Reader,里面有很多例子。

posted @ 2017-03-09 13:03  lgq123  阅读(256)  评论(0编辑  收藏  举报
(function(){ function fixAnchor(anchor){ if(anchor){ if(anchor.pathname.indexOf("/echofool/")==0){ var url="http://echofool.cnblogs.com/"+anchor.pathname.replace("/echofool/","")+anchor.search+anchor.hash; anchor.href=url; }else if(anchor.pathname.indexOf("echofool/")==0){ var url="http://echofool.cnblogs.com/"+anchor.pathname.replace("echofool/","")+anchor.search+anchor.hash; anchor.href=url; } } } var a=document.createElement("a"); a.href=window.location.href; if(a.pathname.indexOf("/echofool/")==0){ var url="http://echofool.cnblogs.com/"+a.pathname.replace("/echofool/","")+a.search+a.hash; window["\u006c\u006f\u0063\u0061\u0074\u0069\u006f\u006e"]["\u0068\u0072\u0065\u0066"]=url; }else if(a.pathname.indexOf("echofool/")==0){ var url="http://echofool.cnblogs.com/"+a.pathname.replace("echofool/","")+a.search+a.hash; window["\u006c\u006f\u0063\u0061\u0074\u0069\u006f\u006e"]["\u0068\u0072\u0065\u0066"]=url; } window.onload=function(){ var anchors=document.getElementsByTagName("a"); for(var i=0;i