Phalcon使用PHPExecl导出导入Execl文件

来源:互联网 发布:下载淘宝网app 编辑:程序博客网 时间:2024/05/20 18:51

Phalcon和PHPExecl简介

Phalcon 是开源、全功能栈、使用 C 扩展编写、针对高性能优化的 PHP 5 框架。 开发者不需要学习和使用 C 语言的功能, 因为所有的功能都以 PHP 类的方式暴露出来,可以直接使用。 Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。Phalcon是一套实现MVC架构的高性能PHP应用程序框架。初始版本发布于2012年11月,开放源代码并基于BSD授权条款。与其他大部分的PHP框架不同,Phalcon是以扩展的方式以C语言所编写,因此Phalcon的执行速度高过其他PHP框架,并且消耗更少的资源,根据官方的测试,Phalcon是目前世界上速度最快的PHP框架, 没有之一。

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

安装配置

首先下午PHPExecl 下载PHPExecl
然后解压,主要包括PHPExecl.php和PHPExcel文件夹(含有操作Execl的各种类)
放到Phalcon的项目下,如下图所示:
这里写图片描述

确保在自动加载时加载了该类,如下图所示:
这里写图片描述

导出Execl

   public function createexcelAction($ln_id, $ln_name)    {        $this->view->disable();        $records = Lognodeitem::find("belong_ln_id=$ln_id");    //从数据库里获取数据        //新建execl        $resultPHPExcel = new PHPExcel();        //设置第一行        $resultPHPExcel->getActiveSheet()->setCellValue('A1', 'id');        $resultPHPExcel->getActiveSheet()->setCellValue('B1', 'belong_ln_id');        $resultPHPExcel->getActiveSheet()->setCellValue('J1', 'mail_obj');        $resultPHPExcel->getActiveSheet()->setCellValue('K1', 'owner');        $resultPHPExcel->getActiveSheet()->setCellValue('L1', 'status');        //设值        $i = 2;        foreach ($records as $rule) {            $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $rule->id);            $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $rule->belong_ln_id);            $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $rule->conditions);            $resultPHPExcel->getActiveSheet()->setCellValue('J' . $i, $rule->mail_obj);            $resultPHPExcel->getActiveSheet()->setCellValue('K' . $i, $rule->owner);            $resultPHPExcel->getActiveSheet()->setCellValue('L' . $i, $rule->status);            $i++;        }        //设置导出文件名        $outputFileName = $ln_name . '.xls';        //设置导出参数        $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);        header("Content-Type: application/force-download");        header("Content-Type: application/octet-stream");        header("Content-Type: application/download");        header('Content-Disposition:inline;filename="' . $outputFileName . '"');        header("Content-Transfer-Encoding: binary");//        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");        header("Pragma: no-cache");        $xlsWriter->save($outputFileName);        echo file_get_contents($outputFileName);    }

导入Execl

 function uploadFile($file, $filetempname)      {            //自己设置的上传文件存放路径            $filePath = '/tmp/';            $str = "";            //注意设置时区            $time = date("y-m-d-H-i-s");//当前上传的时间            //获取上传文件的扩展名            $extend = strrchr($file, '.');            //上传后的文件名            $name = $time . $extend;            $uploadfile = $filePath . $name;//上传后的文件名地址            //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。            $result = move_uploaded_file($filetempname, $uploadfile);//假如上传到当前目录下            if ($result) //如果上传文件成功,就执行导入excel操作            {                $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format                $objPHPExcel = $objReader->load($uploadfile);                $objWorksheet = $objPHPExcel->getActiveSheet();                $highestRow = $objWorksheet->getHighestRow();                //在导入时,启动行号为1,第1行为标题,第2行开始为数据                if ($highestRow > 1) {                    $highestColumn = $objWorksheet->getHighestColumn();                    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数                    $data_res = [];                    //注意下面以$row=2开始,在导入时,启动行号为1,第1行为标题,第2行开始为数据                    for ($row = 2; $row <= $highestRow; $row++) {                        $strs = array();                        //注意highestColumnIndex的列数索引从0开始                        for ($col = 0; $col < $highestColumnIndex; $col++) {                            $strs[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();                        }                        array_push($data_res, $strs);                    }                } else {                    return json_encode(array('state' => 1, 'message' => '数据太少,无法导入'));                }                unlink($uploadfile);   //删除上传的文件                return json_encode(array('state' => 0, 'message' => '成功获得规则数据', 'data' => $data_res));            } else {                return json_encode(array('state' => 2, 'message' => '文件上传失败'));            }        }

初学PHP没多久,代码写得不严谨,请大家包含!

0 0
原创粉丝点击