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 中,先引入相关文件
<?phpYii::import ('application.extensions.*');require_once('PHPExcel/PHPExcel.php');require_once 'PHPExcel/PHPExcel/Writer/Excel5.php'; // 用于其他低版本xlsrequire_once 'PHPExcel/PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式...
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、不要忘了在用户访问控制里面添加动作download
public function accessRules(){array('allow', // allow admin user to perform 'admin' and 'delete' actions 'actions' => array('download'), 'roles' => array('...'), ),}
7、在对应的view文件中,编写链接
<?php echo CHtml::link(CHtml::encode("》导出Excel表格"), array('download','option' => $option)); ?>
8、完成将数据以excel文件导出。
以上是自己对PHPExcel的一个应用,因为是初次接触,用的也不熟练,难免有一些不当,望大家指出,共同进步!

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你應該關心DependencyInjection(DI),因為它能讓你的代碼更清晰、更易維護。 1)DI通過解耦類,使其更模塊化,2)提高了測試的便捷性和代碼的靈活性,3)使用DI容器可以管理複雜的依賴關係,但要注意性能影響和循環依賴問題,4)最佳實踐是依賴於抽象接口,實現鬆散耦合。

是的,優化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)優化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,並避免使用

theKeyStrategiestosigantificallyBoostPhpaPplicationPerformenCeare:1)UseOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)優化AtabaseInteractionswithPreparedStateTementStatementStatementAndProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

禪工作室 13.0.1
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具