ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法示例【基于PHPExcel】
本文實(shí)例講述了ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:
在ThinkPHP框架下,導(dǎo)出excel數(shù)據(jù)的方法示例:
在操作前,應(yīng)該在系統(tǒng)框架的擴(kuò)展目錄中添加ORG庫,即要包含ThinkPHP\Extend\Library\ORG\Util\PHPExcel.class.php文件及其相關(guān)支持文件。
<?php header("Content-type: text/html; charset=utf-8"); class MesTestAction extends Action { //測試導(dǎo)出excel數(shù)據(jù) public function tpGetExcel() { //創(chuàng)建對(duì)象 import("ORG.Util.PHPExcel"); //從PHPExcel目錄導(dǎo)PHPExcel.php類文件 $excel = new PHPExcel(); $data = M()->query('SELECT userid,username,stepgoal FROM tp_data_user LIMIT 2775'); //Excel表格式,這里簡略寫了3列 $letter = array('A','B','C'); //表頭數(shù)組 $tableheader = array('userid','用戶名','目標(biāo)步數(shù)'); $count= count($data);//總的數(shù)據(jù)行數(shù) $listNum = 500;//每個(gè)sheet頁最大數(shù)據(jù)行數(shù) $num = ceil($count/$listNum);//sheet頁個(gè)數(shù) $MuitData = array_chunk($data,$listNum,false);//分割總的數(shù)據(jù),每頁最多$listNum行有效數(shù)據(jù) //var_dump($MuitData);//die('as'); //缺省情況下,PHPExcel會(huì)自動(dòng)創(chuàng)建第一個(gè)SHEET,其索引SheetIndex=0 //設(shè)置 當(dāng)前處于活動(dòng)狀態(tài)的SHEET 為PHPExcel自動(dòng)創(chuàng)建的第一個(gè)SHEET $excel->setActiveSheetIndex(0); //objPHPExcel //設(shè)置sheet的title $excel->getActiveSheet()->setTitle('考核得分第'.'1'.'頁'); //設(shè)置sheet的列名稱 for($k = 0; $k < count($tableheader); ++$k) { $excel->getActiveSheet()->setCellValue("$letter[$k]".'1',"$tableheader[$k]");//第一行數(shù)據(jù) } //填充表格信息 處理第1塊數(shù)據(jù) $crrntSheetLineNo = count($MuitData[0]) + 1; for ( $j = 2; $j <= $crrntSheetLineNo; ++$j) { //遍歷每一行 $k = 0; foreach ( $MuitData[0][$j - 2] as $key => $value ) {//遍歷具體行的某一列 $excel->getActiveSheet()->setCellValue("$letter[$k]".$j,"$value");//第$k列 第$j行 $k++; } } //后續(xù)的sheet頁及數(shù)據(jù)塊 for ( $i = 1; $i <$num; ++$i) { //創(chuàng)建第$i個(gè)sheet $msgWorkSheet = new PHPExcel_Worksheet($excel, '考核得分第'.($i + 1).'頁'); //創(chuàng)建一個(gè)工作表 $excel->addSheet($msgWorkSheet); //插入工作表 $excel->setActiveSheetIndex($i); //切換到新創(chuàng)建的工作表 //設(shè)置sheet的列名稱 for($k = 0; $k < count($tableheader); ++$k) { $excel->getActiveSheet()->setCellValue("$letter[$k]1","$tableheader[$k]");//第一行數(shù)據(jù) } //填充表格信息 處理第$i塊數(shù)據(jù) $crrntSheetLineNo = count($MuitData[$i]) + 1; //var_dump($crrntSheetLineNo);var_dump($MuitData[$i-1]);die('as'); for ( $j = 2; $j <= $crrntSheetLineNo; ++$j) { //遍歷每一行 $k = 0; foreach ( $MuitData[$i-1][$j - 2] as $key => $value ) {//遍歷具體行的某一列 $excel->getActiveSheet()->setCellValue("$letter[$k]$j","$value");//第$k列 第$j行 ++$k; } } usleep(100); } //創(chuàng)建Excel輸出對(duì)象 $filename = "大獎(jiǎng)賽培訓(xùn)考核得分.xls"; $write = new PHPExcel_Writer_Excel5($excel); ob_end_clean();//清除緩沖區(qū),避免亂碼 /* //輸出到本地 $write->save( iconv('utf-8', 'gbk', $filename) ); */ //輸出到瀏覽器 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/download"); header('Content-Type:application/octet-stream'); $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); $ua = $_SERVER["HTTP_USER_AGENT"]; if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"'); } else { header('Content-Disposition: attachment; filename="' . $filename . '"'); } header("Content-Transfer-Encoding:binary"); $write->save('php://output'); } } ?>
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- thinkPHP5框架導(dǎo)出Excel文件簡單操作示例
- ThinkPHP使用PHPExcel實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出完整實(shí)例
- ThinkPHP基于PHPExcel導(dǎo)入Excel文件的方法
- 詳解thinkphp實(shí)現(xiàn)excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(附完整案例)
- thinkPHP實(shí)現(xiàn)將excel導(dǎo)入到數(shù)據(jù)庫中的方法
- Dwz與thinkphp整合下的數(shù)據(jù)導(dǎo)出到Excel實(shí)例
- thinkphp3.2中實(shí)現(xiàn)phpexcel導(dǎo)出帶生成圖片示例
- 基于ThinkPHP+uploadify+upload+PHPExcel 無刷新導(dǎo)入數(shù)據(jù)
- thinkPHP導(dǎo)出csv文件及用表格輸出excel的方法
- ThinkPHP 框架實(shí)現(xiàn)的讀取excel導(dǎo)入數(shù)據(jù)庫操作示例
- thinkphp5.1 框架導(dǎo)入/導(dǎo)出excel文件操作示例
相關(guān)文章
使用ThinkPHP的自動(dòng)完成實(shí)現(xiàn)無限級(jí)分類實(shí)例詳解
這篇文章主要介紹了使用ThinkPHP的自動(dòng)完成實(shí)現(xiàn)無限級(jí)分類功能,本文通過圖文并茂的方式給大家展示,介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09Codeigniter操作數(shù)據(jù)庫表的優(yōu)化寫法總結(jié)
用codeigniter也有一段時(shí)間了,一直沒有做什么總結(jié)?,F(xiàn)在總結(jié)一些Codeigniter操作數(shù)據(jù)庫表的優(yōu)化寫法,需要的朋友可以參考下2014-06-06PHP判斷json格式是否正確的實(shí)現(xiàn)代碼
本文給大家分享PHP判斷json格式是否正確的實(shí)現(xiàn)代碼,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09實(shí)例分析PHP將字符串轉(zhuǎn)換成數(shù)字的方法
在本篇文章里我們給大家分享的是關(guān)于PHP將字符串轉(zhuǎn)換成數(shù)字的方法和相關(guān)知識(shí)點(diǎn),有興趣的朋友們學(xué)習(xí)下。2019-01-01PHP 獲取 ping 時(shí)間的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP 獲取 ping 時(shí)間的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09windows的文件系統(tǒng)機(jī)制引發(fā)的PHP路徑爆破問題分析
這篇文章主要介紹了windows的文件系統(tǒng)機(jī)制引發(fā)的PHP路徑爆破問題分析,需要的朋友可以參考下2014-07-07PHP編譯configure時(shí)常見錯(cuò)誤的總結(jié)
這篇文章主要介紹了PHP編譯configure時(shí)常見錯(cuò)誤的總結(jié)的相關(guān)資料,本文總結(jié)了一些常見的configure錯(cuò)誤信息和解決這些錯(cuò)誤的經(jīng)驗(yàn),需要的朋友可以參考下2017-08-08