Loading... # [php 导出Excel方法](https://blog.p2hp.com/archives/1182) <?php /** * PHPExcel * * Copyright (C) 2006 - 2014 PHPExcel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * @category PHPExcel * @package PHPExcel * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version 1.8.0, 2014-03-02 */ /** Error reporting */ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); date_default_timezone_set('Asia/Shanghai'); /** Include PHPExcel */ require_once(dirname(__FILE__)."/../PHPExcel/PHPExcel.php"); require_once(dirname(__FILE__)."/config.php"); //require_once (dirname(__FILE__) . "/../include/common.inc.php"); $diyid = isset($diyid) && is_numeric($diyid) ? $diyid : 0; $chk=$_GET['chk']; require_once ITVINC.'/diyform.cls.php'; $diy = new diyform($diyid); /* if($dsql->IsTable($diy->table)){ $sql = "SELECT * FROM $diy->table"; $dsql->Execute('me',$sql); // while($arr = $dsql->GetArray('me',MYSQL_BOTH)) //{ // echo "id = {$arr[0]} ,name = {$arr[1]}<br />"; //} } */ /* include_once ITVINC.'/datalistcp.class.php'; if (isset($chk)) { $query = "SELECT * FROM {$diy->table} where ifcheck=$chk ORDER BY id DESC"; }else { $query = "SELECT * FROM {$diy->table} ORDER BY id DESC"; } $datalist = new DataListCP(); $datalist->pageSize = 10; $datalist->SetParameter('diyid', $diyid); $datalist->SetSource($query); $fieldlist = $diy->getFieldList(); */ // Create new PHPExcel object //echo date('H:i:s') , " Create new PHPExcel object" , EOL; $objPHPExcel = new PHPExcel(); // Set document properties设置文档属性 //echo date('H:i:s') , " Set document properties" , EOL; $objPHPExcel->getProperties()->setCreator("itv media inc") ->setLastModifiedBy("itv media inc") ->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"); // Create a first sheet, representing sales data//写入单元格数据 //echo date('H:i:s') , " Add some data" , EOL; $objPHPExcel->setActiveSheetIndex(0); if ($diyid==2||$diyid==4) { $objPHPExcel->getActiveSheet()->setCellValue('A1', 'id') ->setCellValue('B1', '分组名称') ->setCellValue('C1', '申请人姓名') ->setCellValue('D1', '身份证号') ->setCellValue('E1', '联系方式') ->setCellValue('F1', '是否愿意担任小组联络人') ->setCellValue('G1', '申请说明') ->setCellValue('H1', '状态') ->setCellValue('I1', 'time'); }else { $objPHPExcel->getActiveSheet()->setCellValue('A1', 'id') ->setCellValue('B1', '分组名称') ->setCellValue('C1', '单位名称') ->setCellValue('D1', '参加人数') ->setCellValue('E1', '联系人') ->setCellValue('F1', '联系电话') ->setCellValue('G1', '申请说明') ->setCellValue('H1', '状态') ->setCellValue('I1', 'time'); } if($dsql->IsTable($diy->table)){ // $sql = "SELECT * FROM $diy->table"; if (isset($chk) && $chk!=='') { $sql = "SELECT * FROM $diy->table where ifcheck='$chk'"; }else { $sql = "SELECT * FROM $diy->table"; } $dsql->Execute('me',$sql); $item=1; while($arr = $dsql->GetArray('me',MYSQL_BOTH)) { $item++; //$arr[8]=date("Y-m-d H:i:s",$arr[8]); if($arr[1]=="1") { $arr[1]="已验证"; }else { $arr[1]="未验证"; } $objPHPExcel->getActiveSheet()->setCellValue("A$item", "$arr[0]") ->setCellValue("B$item", "$diy->name") ->setCellValue("C$item", "$arr[2]") ->setCellValue("D$item", " $arr[3]") ->setCellValue("E$item", " $arr[4]") ->setCellValue("F$item", " $arr[5]") ->setCellValue("G$item", "$arr[6]") ->setCellValue("H$item", "$arr[1]") ->setCellValue("I$item", date('Y-m-d H:i:s',$arr[7])); } } // Set column widths设置单元格宽度 //echo date('H:i:s') , " Set column widths" , EOL; $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(17); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(22); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(62); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15); // Add conditional formatting //echo date('H:i:s') , " Add conditional formatting" , EOL; $objConditional1 = new PHPExcel_Style_Conditional(); $objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_BETWEEN) ->addCondition('200') ->addCondition('400'); $objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); $objConditional1->getStyle()->getFont()->setBold(true); $objConditional1->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); $objConditional2 = new PHPExcel_Style_Conditional(); $objConditional2->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) ->addCondition('0'); $objConditional2->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); $objConditional2->getStyle()->getFont()->setItalic(true); $objConditional2->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); $objConditional3 = new PHPExcel_Style_Conditional(); $objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) ->addCondition('0'); $objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); $objConditional3->getStyle()->getFont()->setItalic(true); $objConditional3->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); //$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(); 后来去 array_push($conditionalStyles, $objConditional1); array_push($conditionalStyles, $objConditional2); array_push($conditionalStyles, $objConditional3); //$objPHPExcel->getActiveSheet()->getStyle('B2')->setConditionalStyles($conditionalStyles); 后来去 // duplicate the conditional styles across a range of cells复制单元格格式 //echo date('H:i:s') , " Dulicate the conditional formatting across a range of cells" , EOL; /* $objPHPExcel->getActiveSheet()->duplicateConditionalStyle( $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(), 后来去 'B3:B7' );*/ // Set fonts设置字体 //echo date('H:i:s'), " Set fonts" , EOL; $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setBold(true); //$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); //$objPHPExcel->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true); //$objPHPExcel->getActiveSheet()->getStyle('B7')->getFont()->setBold(true); //set color设置背景色 $objPHPExcel->getActiveSheet()->getStyle( 'A1:I1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle( 'A1:I1')->getFill()->getStartColor()->setARGB('FFD2D2D2'); // Set header and footer. When no different headers for odd/even are used, odd header is assumed. //echo date('H:i:s') , " Set header/footer" , EOL; $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D'); $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); // Set page orientation and size设计页面方向和大小 //echo date('H:i:s') , " Set page orientation and size" , EOL; $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // Rename worksheet //echo date('H:i:s') , " Rename worksheet" , EOL; $objPHPExcel->getActiveSheet()->setTitle('工作表名字'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // 保存文件 // Save Excel 2007 file //echo date('H:i:s') , " Write to Excel2007 format" , EOL; $cttime=$diy->name.date('YmdHis').'.php'; $cttimed=$diy->name.date('YmdHis'); $callStartTime = microtime(true); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save(str_replace('.php', '.xlsx', $cttime)); $callEndTime = microtime(true); $callTime = $callEndTime - $callStartTime; //echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; //echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; // Save Excel5 file //echo date('H:i:s') , " Write to Excel5 format" , EOL; $callStartTime = microtime(true); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save(str_replace('.php', '.xls', $cttime)); $callEndTime = microtime(true); $callTime = $callEndTime - $callStartTime; //直接输出到浏览器 $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 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/octet-stream"); header("Content-Type:application/download");; header("Content-Disposition:attachment;filename=$cttimed.xls"); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); //echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; //echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; // Echo memory usage //echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; // Echo memory peak usage //echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; // Echo done //echo date('H:i:s') , " Done writing file" , EOL; //echo 'File has been created in ' , getcwd() , EOL; 最后修改:2023 年 08 月 07 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏