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);

 

posted @ 2025-04-04 10:36  海乐学习  阅读(34)  评论(0)    收藏  举报