深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 637|回复: 0
打印 上一主题 下一主题

beacon实现下载CSV

[复制链接]

800

主题

1379

帖子

7706

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7706
跳转到指定楼层
楼主
发表于 2021-9-4 20:25:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
默认下载为xlsx文档 ,如果数据量非常大,建议用csv

以下代码mod.testdata.php

  1. <?php


  2. //by syant
  3. //FPY报表需要处理一下excel的模板下载
  4. //defined('WORK_PATH') or define('WORK_PATH',dirname(__FILE__).DIRECTORY_SEPARATOR);

  5. class TESTDATA extends tpage{
  6.                
  7.         function TESTDATA($app) {
  8.                 parent::__construct($app);
  9.         }       
  10.        
  11.         /*
  12.          * 重构默认的Excel下载逻辑
  13.          */
  14.         function createExcel(){
  15.                 global $db, $config, $user, $report, $smarty;
  16.                 $sqlstr = $smarty->tpl_vars["sql"];
  17.                 $limit = 65000;  //最大60K
  18.                 //require_once("phar://beacon.inc.phar/page.inc.php");        
  19.                 include_once("page.inc.php");
  20.                 $pager = new pager($limit, 1);
  21.                 $data=$pager->execute($db, $sqlstr);
  22.                
  23.                
  24.                 $csv="";
  25.                 $title=array_keys($data[0]);
  26.     if($title){  
  27.         foreach($title AS $v){
  28.                                         $csv=$csv.$v.",";       
  29.         }  
  30.     }  
  31.                 $csv=$csv."\n";
  32.                
  33.                
  34.                 $line=array();
  35.                 foreach($data as $v){
  36.                         $line[]=array_values($v);
  37.                 }

  38.        
  39.                 $filename = uniqid(time(),true);  
  40.     $outformat = $filename.".csv";
  41.                


  42.     //填写数据  
  43.                 $data = "";
  44.     if($line){  
  45.         foreach($line AS $_v){  
  46.                                                 $tmp="";
  47.             foreach($_v AS $_cell){  
  48.                 $tmp=$tmp. $_cell.",";   
  49.             }
  50.                                                 $data=$data.$tmp."\n";
  51.         }  
  52.     }  

  53.     $csv = iconv("utf-8", "gbk//IGNORE", $csv);
  54.     $data = $csv . $data;
  55.     header("Cache-control: private");
  56.     header("Pragma: public");
  57.     header('Content-type: application/x-csv');
  58.     header("Content-Disposition: attachment; filename=$outformat");
  59.     echo $data;
  60.     exit; //by syant ,很重要!
  61.        
  62.   }
  63.   
  64. }
  65. ?>
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 06:47 , Processed in 0.029356 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表