PHPExcel插件的使用1——基本数据导出

来源:互联网 发布:vb调用大漠 编辑:程序博客网 时间:2024/05/17 06:36

PHPExcel插件的使用1——基本数据导出

本文总结了phpexcel的简单数据导出.归纳了步骤,解释了方法.最后用实例写出了建立多个sheet情况下数据库的导出。插入图片,样式等等会在后期连载。不过一般导出之后处理样式会更加方便。

准备工作

1,下载phpexcel压缩包//前往http://phpexcel.codeplex.com/下载即可2,步骤:解压后将文件中Class文件夹{也就是核心代码}取出,放在www目录下。3,将Class文件夹下面的PHPExcel.php文件{相当于整个PHPExcel插件的入口}导入到需要代码执行页面。    例如: require_once "./PHPExcel.php";

导出文件

步骤及方法讲解

1,要调用phpexcel插件,必须要有一个对象来调用,所以第一步就是实例化PHPExcel类。    例如:        $objPHPExcel = new PHPExcel();2,实例化对象之后,我们需要创建sheet    用到的方法:        createSheet()          //创建一个新的sheet        setActiveSheetIndex()  //设定sheet为当前的活动sheet        getActiveSheet()       //获取当前sheet的活动对象。用于操作sheet3,创建sheet之后,需要填充数据      用到的方法:        setCellValue()         //填充数据4,数据填充结束后进行保存    用到的方法:        PHPExcel_IOFactory::createWriter()        save();

实例demo

<?phpheader('content-type:text/html;charset=utf-8');$cur_dir = dirname(__FILE__);require_once './PHPExcel.php';//实例化phpexcel的入口类$PHPExcelObj = new PHPExcel();//获得当前sheet的操作对象$sheetObj = $PHPExcelObj->getActiveSheet();//给当前被操作的sheet取别名$sheetObj->setTitle('sheet1');//填充数据方法1/*--------------------------------------------------------------    //注意填充方法,A1,A2,…… 代表excel表格的行列坐标    $sheetObj->setCellValue('A1','NIU')->setCellValue('B1','Ngau');    $sheetObj->setCellValue('A2','SHAO')->setCellValue('B2','SHAO');    $sheetObj->setCellValue('A3','GANG')->setCellValue('B3','GANG');--------------------------------------------------------------*//*--------------------------------------------------------------//填充数据方法2    //数组的方式填充数据    $array = array(         array(),          //加入一个空数组,则会空出一行        array('a','b','c'),        array(),        array('d','e','f'),        array(),        array('g','h','i'),        );    $sheetObj->fromArray($array);//填充数组到表格---------------------------------------------------------------*///给将要生成的excel文件定义版本,定义之后返回一个对象$writerObj = PHPExcel_IOFactory::createWriter($PHPExcelObj,'excel2007');//保存excel文件,指定路径和文件名输出$writerObj -> save($cur_dir.'/excelnamearr.xlsx');//输出当前文件夹,名为excelname1

过程总结

实例化入口类  $PHPExcelObj = new PHPExcel()                            --——>取得当前sheet操作,定义名字  $sheetObj = $PHPExcelObj->getActiveSheet()                          $sheetObj->setTitle('sheet1')               ———>填充数据    两种方法        逐个添加:$sheetObj->setCellValue('coordinate','Value')……        数组添加:$array = array(values);                $sheetObj->fromArray($array);                        ————>定义版本    $writerObj = PHPExcel_IOFactory::createWriter($PHPExcelObj,'excel2007')                                                                     ————>保存文件    $writerObj -> save($cur_dir.'/excelnamearr.xlsx');

注意

    数组的输出比逐行输出用的内存大很多,非必要情况下,一般使用逐行输出

实际demo(创建多sheet)//查询数据库,输出到excel

<?phpheader('content-type:text/html;charset=utf-8');$cur_dir = dirname(__FILE__);require_once './PHPExcel.php';require_once './DatabaseOperate.class.php';$OpMysqlObj = new DatabaseOperate(0,0,0,0);//写0使用默认的配置//先查询出父类,方便后期建sheet$sql = "select c_id,c_fid,c_title from vr_class where c_fid = 0 order by c_addtime desc";$province = $OpMysqlObj->getAllArray($sql);//var_dump($province);$objPHPExcel = new PHPExcel();for($i=0;$i<count($province);$i++){     //建立多个sheets    if($i!=0){         $objPHPExcel->createSheet();    }    //多个sheet,从0开始    $objPHPExcel->setActiveSheetIndex($i);    $sheetObj = $objPHPExcel->getActiveSheet();    $sheetname = $province[$i]['c_title'].'_'.$province[$i]['c_id'];    $sheetObj->setTitle($sheetname);    $OpMysqlObj1 = new DatabaseOperate(0,0,0,0);    $sql1 = "select c_id as '城市号',c_fid as '归属省号',c_title as '城市名',c_describe as '城市描述',                from_unixtime(c_addtime,'%Y-%M-%D %H:%I:%S')时间,if(c_status = 0,'禁用','启用')状态                 from vr_class where c_fid = {$province[$i]['c_id']} order by c_addtime desc";    $arr = $OpMysqlObj1->getAllArray($sql1);    /*    -----------------用数组插入耗内存大-------------------------    $sheetObj->fromArray($arr);    ----------------------end-----------------------------------    */    //-----------------------逐条填充,低内存--------------------    //添加标题    $sheetObj->setCellValue('A1','城市号')            ->setCellValue('B1','归属省号')            ->setCellValue('C1','城市名')            ->setCellValue('D1','城市描述')            ->setCellValue('E1','城市日期')            ->setCellValue('F1','状态');    $j = 2;    foreach($arr as $key => $val){         $sheetObj->setCellValue('A'.$j,$val['城市号'])        ->setCellValue('B'.$j,$val['归属省号'])        ->setCellValue('C'.$j,$val['城市名'])        ->setCellValue('D'.$j,$val['城市描述'])        ->setCellValue('E'.$j,$val['时间'])        ->setCellValue('F'.$j,$val['状态']);        $j++;    }    //---------------------end----------------------------------}$writerObj = PHPExcel_IOFactory::createWriter($objPHPExcel,'excel2007');$writerObj -> save($cur_dir.'/vr_class_sheets_perupload.xlsx');//注意:如果不生成文件,直接浏览器输出的情况下://php不生成excel文件,直接输出到浏览器//进入解压之后的目录,在Examples目录下面找到01simple-download-xls.php    01simple-download-xlsx.php两个文件,复制出下面四条//告诉浏览器输出excel07header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出excel03header('Content-Type: application/vnd.ms-excel');//定义输出文件的名称header('Content-Disposition: attachment;filename="fileName.xls"');header('Cache-Control: max-age=0');//禁止缓存//最后将save()方法加入参数:php://output$writerObj -> save('php://output');
0 0
原创粉丝点击