web页面中导出Excel (方法七) 后端php导出Excel 使用 XmlExcel.php
XmlExcel.php 是一个用于生成 Excel XML 格式(SpreadsheetML) 文件的 PHP 类库,适用于早期版本的 Excel(如 Excel 2003)。
它通过直接生成 XML 结构来创建 .xls 文件
特点:轻量级 不依赖外部库,纯 PHP 实现,适合老旧环境(PHP 5.2+)
生成 Excel 2003 兼容的 XML 格式 。输出 .xls 文件(SpreadsheetML 格式,非二进制 XLS)
ToExcel_XmlExcel.php
<?php error_reporting(E_ALL^E_NOTICE);//Notice不显示 ^E_DEPRECATED set_time_limit(0);//不设 php 超时限制 require_once('../../config.php'); require_once('../../Log/LogHelper2.php'); require_once('../../myClass/myDBHelper2.php'); require_once('../../ToExcel/lib/XmlExcel.php'); $table_name='woke_order_repair'; $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=" id,contact_name,contact_callerid, date_entered , contact_source,media_name,media_date,contact_province,contact_city,contact_address,order_type,order_status ";$sql = "select {$col} from {$table_name} where ".$where .$order ;// //WriteLog($sql);
//Excel中的列名 $row = array(); $row[]="编号";//0 $row[]="姓名"; $row[]="电话号码"; $row[]="创建时间"; $row[]="客户来源"; $row[]="媒体名称";//media_name 媒体名称 $row[]="媒体时间";//media_date 媒体时间 $row[]="省份"; $row[]="城市"; $row[]="地址";$items = array(); array_push($items, $row); $result=$db->query($sql); while($row_order=$db->fetch_array($result)){ // 手动创建纯关联数组 $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; exportXmlExcel($fileName,$items); return; function exportXmlExcel($fileName, $data, $headers = null) { $xls = new XmlExcel; $xls->setDefaultWidth(80); $xls->setDefaultAlign("center"); $xls->setDefaultHeight(18); // 使用第一个sheet(默认) $sheetName = "Sheet1"; // 添加表头(如果提供) if ($headers !== null && is_array($headers)) { $xls->addHead($headers, $sheetName); } // 添加数据行 foreach ($data as $row) { $xls->addRow($row, $sheetName); } // 导出文件 $xls->export($fileName); exit; } ?>
其中这段是只保留 数字索引 部分
// 手动创建纯关联数组 $clean_row = array(); foreach($row_order as $key => $value) { if(!is_numeric($key)) { // 只保留非数字键 $clean_row[$key] = $value; } }
默认是
[0] => 9377E762-D54F-2068-494F-82395D0C9A34 [id] => 9377E762-D54F-2068-494F-82395D0C9A34 [1] => 保存 [contact_name] => 保存 [2] => 032525 [contact_callerid] => 032525 [3] => 2025-03-26 09:44:52 [date_entered] => 2025-03-26 09:44:52
或者也可以用这个方法,但 如果php版本低 方法一 可能会不起作用
// 方案1:只获取关联数组 $db->fetch_array($result, MYSQL_ASSOC); // 方案2:只获取数字索引数组 $db->fetch_array($result, MYSQL_NUM);
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}>'; /* 获取 where 条件 */ $.ajax({ url: url, type: "post", data: query, dataType: "json", success: function (data) { //alert(data.where); alert(data.total); where=data.where;//将条件 传出 order=data.order;//排序 //alert(where); if(where==""){ $.messager.alert('消息','没有要导出的数据,请点击查询,再试! ','info'); return; } location.href=encodeURI('modules/<{$module_name}>/ToExcel_XmlExcel.php?where='+where +"&order=" +order); } }); }
调用方法
location.href=encodeURI('modules/<{$module_name}>/ToExcel_XmlExcel.php?where='+where +"&order=" +order);

浙公网安备 33010602011771号