PHPExcel(一)- 导出功能
程序员文章站
2022-04-20 11:34:12
...
PHPExcel(1)-- 导出功能
PHPExcel导出功能
Web开发的时候,经常会遇到需要将数据库中某些表单导出到excel文件中的问题。我在运用yii框架做web开发过程中,发现有个应用为PHPExcel,该应用能够实现excel文件的导入导出,刚好能够满足需要的要求。一下是自己应用 PHPExcel 做数据导出的记录。
1、首先下载该应用,github链接为:https://github.com/PHPOffice/PHPExcel
2、在 protected/extensions 路径下建立 PHPexcel 目录,将下载的 PHPExcel 文件解压。
3、将解压后的classes目录下所有内容,拷贝放到protected/extensions/PHPexcel 目录下
4、在控制器文件 XXX.Controller.php 中,先引入相关文件
PHPExcel导出功能
Web开发的时候,经常会遇到需要将数据库中某些表单导出到excel文件中的问题。我在运用yii框架做web开发过程中,发现有个应用为PHPExcel,该应用能够实现excel文件的导入导出,刚好能够满足需要的要求。一下是自己应用 PHPExcel 做数据导出的记录。
1、首先下载该应用,github链接为:https://github.com/PHPOffice/PHPExcel
2、在 protected/extensions 路径下建立 PHPexcel 目录,将下载的 PHPExcel 文件解压。
3、将解压后的classes目录下所有内容,拷贝放到protected/extensions/PHPexcel 目录下
4、在控制器文件 XXX.Controller.php 中,先引入相关文件
5、编写方法Download(以下是自己开发过程中的部分代码)public function actionDownload($option) { // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // Set properties $objPHPExcel->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"); //$objPHPExcel->getActiveSheet()->mergeCells('A1:G1'); //$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); //$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); //$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20); $subjects = Subject::model()->findAll("headteacher=:name", array(":name" => Yii::app()->session['name'])); //找出相关课程组 foreach ($subjects as $item1) { $criteria = new CDbCriteria; // 创建CDbCriteria对象 $criteria->addCondition("suid = :id"); $criteria->params[':id'] = $item1->id; $criteria->select = '*'; //按照返回参数搜索选题信息 if ($option == 1) { $criteria->order = 'Cid'; //$criteria -> limit = 3; $b = Selectcourse::model()->findAll($criteria); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '选题情况') ->setCellValue('A2', '学生ID') ->setCellValue('B2', '学生姓名') ->setCellValue('C2', '课程名称') ->setCellValue('D2', '题目名称') ->setCellValue('E2', '选题时间'); $count = 2; foreach ($b as $item2) { $count += 1; $l1 = "A" . "$count"; $l2 = "B" . "$count"; $l3 = "C" . "$count"; $l4 = "D" . "$count"; $l5 = "E" . "$count"; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($l1, $item2->sid) ->setCellValue($l2, Student::model()->find(array('condition' => 'id=' . $item2->sid,))->name) ->setCellValue($l3, $item1->name) ->setCellValue($l4, Course::model()->find(array('condition' => 'Cid=' . $item2->cid,))->Cname) ->setCellValue($l5, $item2->apply_time); } } if ($option == 2) { $criteria->order = 'sid'; //$criteria -> limit = 3; $b = Selectcourse::model()->findAll($criteria); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '选题情况') ->setCellValue('A2', '学生ID') ->setCellValue('B2', '学生姓名') ->setCellValue('C2', '课程名称') ->setCellValue('D2', '题目名称') ->setCellValue('E2', '选题时间'); $count = 2; foreach ($b as $item2) { $count += 1; $l1 = "A" . "$count"; $l2 = "B" . "$count"; $l3 = "C" . "$count"; $l4 = "D" . "$count"; $l5 = "E" . "$count"; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($l1, $item2->sid) ->setCellValue($l2, Student::model()->find(array('condition' => 'id=' . $item2->sid,))->name) ->setCellValue($l3, $item1->name) ->setCellValue($l4, Course::model()->find(array('condition' => 'Cid=' . $item2->cid,))->Cname) ->setCellValue($l5, $item2->apply_time); } } } // Rename sheet $objPHPExcel->getActiveSheet()->setTitle('学生选题信息'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // Redirect output to a client’s web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="学生选题信息.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); }
6、不要忘了在用户访问控制里面添加动作downloadpublic function accessRules(){array('allow', // allow admin user to perform 'admin' and 'delete' actions 'actions' => array('download'), 'roles' => array('...'), ),}
7、在对应的view文件中,编写链接$option)); ?>
8、完成将数据以excel文件导出。
以上是自己对PHPExcel的一个应用,因为是初次接触,用的也不熟练,难免有一些不当,望大家指出,共同进步!相关文章
相关视频
推荐阅读
-
开发一款app,php做服务端,有一个功能是附近的人和发布动态的时候发布自己的定位,php世界有啥好的方案去做这些吗?
-
phpExcel导出大量数据出现内存溢出错误的解决方法
-
请问一个PHPExcel有关问题
-
phpexcel导出excel文件,用IE8无法下载,另存为对话框一闪而过
-
不要框架,纯PHP,能实现这样的功能吗?有很多页面,有插入删除修改功能,只写一种增删改方法,其他页面也能共用这一个方法
-
WordPress中对访客评论功能的一些优化方法,wordpress评论功能_PHP教程
-
用户注册功能:输入验证码后点击空处,自动核对输入的验证码是否正确。如果正确,在验证码框框后面显示一个绿色的对勾
-
PHPExcel导出图片大小设置问题
-
使用PHP导出Redis数据到另一个Redis中的代码_PHP
-
老话题了.PHP导出EXCEL,phpexcel类很强大,但是效率低速度慢,fputcsv速度快但不知道怎么解决科学计数法的问题,求老司机传授经验