web页面中导出Excel (方法八) 后端php导出Excel 使用 PHPExcel.php
使用 PHPExcel(兼容 PHP 5.2+)
优点:
支持 .xls 和 .xlsx(需 PHPExcel 1.8+)
支持复杂格式(合并单元格、公式、样式)
缺点:
需要额外引入 PHPExcel
大数据量可能较慢
使用方法
1.需要下载 PHPExcel 文件包
2.解压后引入 Classes 目录
<?php require_once 'PHPExcel/Classes/PHPExcel.php'; function exportExcel($fileName, $data) { $objPHPExcel = new PHPExcel(); $sheet = $objPHPExcel->getActiveSheet(); // 填充数据 foreach ($data as $rowNum => $row) { foreach ($row as $colNum => $cellValue) { $sheet->setCellValueByColumnAndRow($colNum, $rowNum + 1, $cellValue); } } // 设置 HTTP 头 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } // 示例数据 $data = [ ["姓名", "年龄", "城市"], ["张三", 25, "北京"], ["李四", 30, "上海"], ]; // 导出 Excel exportExcel("用户数据", $data); ?>
完整示例
js
function ToExcel(){var where=""; var order=""; var query=select_parameter(); var url='Ajax-index.php?module=<{$module_name}>&action=Ajax_GridView_Select&assigned_user_id=<{$assigned_user_id}>&start_time=<{$start_date}>&stop_time=<{$stop_date}>'; /* 获取 条件 */ $.ajax({ url: url, type: "post", data: query, dataType: "json", success: function (data) { //alert(data.where); alert(data.order); where=data.where;//将条件 传出 order=data.order;//排序 //alert(where); if(where==""){ $.messager.alert('消息','没有要导出的数据,请点击查询,再试! ','info'); return; } location.href=encodeURI('modules/<{$module_name}>/ToExcel_PHPExcel.php?where='+where +"&order=" +order); } }); }
ToExcel_PHPExcel.php
<?php error_reporting(E_ALL^E_NOTICE);//Notice不显示 ^E_DEPRECATED require_once('../../config.php'); require_once('../../Log/LogHelper2.php'); require_once('../../myClass/myDBHelper2.php'); require_once('../../PHPExcel-1.8.1/Classes/PHPExcel.php'); $table_name='consult'; $arr_result = array(); //返回值 $where='';//查询条件 $order=""; if(!empty($_GET['where'])){ if($_GET['where']!=""){ $where=$_GET['where']; if(!empty($_GET['order'])){//$_GET['order'] 存在则赋值 不存在则默认为"" $order=$_GET['order']; } }else{ $where=' 1=0 ';//查不到的数据 } }else{ $where=' 1=0 ';//查不到的数据 } $where=stripslashes($where); $order=stripslashes($order); $col=" contact_name ,callerid,date_entered,type,contact_office ,description ,assigned_user_name"; // ,name $sql = "select {$col} from {$table_name} where deleted=0 ".$where .$order ;//." limit $offset,$rows "; //WriteLog($sql); $row = array(); $row[]="姓名"; $row[]="电话号码"; $row[]="创建时间"; $row[]="咨询类型"; $row[]="所属办事处"; $row[]="描述"; $row[]="负责人";
$items = array(); array_push($items, $row); $result=$db->query($sql); while($row=$db->fetch_array($result)){ array_push($items, $row); //如果导出后 数据成对出现 是因为有数字索引和字段名两种形式 //手动创建纯关联数组 //$clean_row = array(); //foreach($row_order as $key => $value) { // if(!is_numeric($key)) { // 只保留非数字键 // $clean_row[$key] = $value; // } //} //array_push($items, $clean_row); } //Excel文件名 $date_now=date("YmdHis",strtotime("now")); $fileName="Book".$date_now ; exportExcel($fileName,$items); return; //PHPExcel function exportExcel($fileName, $data) { $objPHPExcel = new PHPExcel(); $sheet = $objPHPExcel->getActiveSheet(); // 填充数据 foreach ($data as $rowNum => $row) { foreach ($row as $colNum => $cellValue) { $sheet->setCellValueByColumnAndRow($colNum, $rowNum + 1, $cellValue); } } // 设置 HTTP 头 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } ?>

浙公网安备 33010602011771号