从页面导出报表,以CSV, doc,pdf格式

这是我做项目时遇到的一个需求,我做的这个项目后台是TP框架(thinkphp)所以可能不符合每个人的要求,但也是作为我自己的一个积累吧,好了进入正题一定要有这几个文件

这几个文件在lib-》modle下

以下是php代码

private function translate($data)    //这部分是翻译数据,比如下面有一个risk_level,这个是数据库里的一个字段,代表级别分为高中低,数据库里用1,2,3表示,但如果输出出来就要输出汉字,所以给他做一个翻译
    {
        if ($data == null) {
            return false;
        }
        // 填充excel表格数据
        $items = array();
        foreach($data as $t){
            if($t['rep_type'] == '1'){
                $t['rep_type']=L("malicious_ip");
            }else if($t['rep_type'] == '2'){
                $t['rep_type']=L("attack_the_springboard");
            }else if($t['rep_type'] == '3'){
                $t['rep_type']=L("botnet");
            }else if($t['rep_type'] == '4'){
                $t['rep_type']=L("malicious_DNS");
            }else if($t['rep_type'] == '5'){
                $t['rep_type']=L("malicious_URL");
            }else if($t['rep_type'] == '3'){
                $t['rep_type']=L("malicious_Email");
            }

            if($t['risk_level'] == '1'){
                $t['risk_level']=L("low");
            }else if($t['risk_level'] == '2'){
                $t['risk_level']=L("medium");
            }else if($t['risk_level'] == '3'){
                $t['risk_level']=L("high");
            }
        
            $items[] = $t;
        }
        return $items;
    }

    
     private function header()
    {
        // 填充表头信息(表格头部标题)
        $tableHeader = array();
        
        $tableHeader[] = L("credibility_type");
        $tableHeader[] = L("source_ip");
        $tableHeader[] = L("purpose_ip");
        $tableHeader[] = L("event_level");
        $tableHeader[] = L("event_description");
        $tableHeader[] = L("time");     
            // $excel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableHeader[$i]");
        
        return $tableHeader;
    }
     // 实现导出下载
    public function download($flag)
    {
        $Public = A('Index', 'Public'); // 加载IndexPublic类
        $Public->check();
        // add by chenjie 判断用户是否有此操作权限 begin
        $menuid = $_GET['menuid'];
        // $Public->operateAuthority("download", $menuid);
        /*
         * $authority = $Public->operateAuthorityReturn("download", $menuid);
         * if ($authority != 1) {
         * echo "<html><label style='color:red;size:20;text-align:center'>抱歉,您没有下载权限!</label></html>";//标识没有权限
         * exit;
         * }
         */
        // add by chenjie 判断用户是否有此操作权限 end
        // try {
        // 设置下载的列
        //$condition = $this->getCondition();
        // 表头数组
        $columns = explode(",", trim($_GET['columns']));
        
        $tableHeader = $this->header($columns);
        //p($tableHeader);
        
        $db = M("reputation_alarm");
        $sql = "select  rep_type,ra_src,ra_dest,risk_level,ra_desc,ra_date from reputation_alarm order by ra_id desc limit 100000";
        // p($sql);
        $data = $db->query($sql);
        // $arr = $db->where($condition)
        //         ->order("dev_id asc")
        //         ->limit(100000)
        //         ->select();
            // ->field('policy_grade,policy_priority')
           
        //p($db->getlastsql());
        $data = $this->translate($data);
        //p($data);
        //unset($menu, $users, $columns);
        $Public->managelog($_SESSION['login']['se_id'], $menuid, "download", "1");
        
        if (1 == $flag) {
            $Export = D('exportExcel');
            $Export->createExcel($tableHeader, $data, 'php://output', 60000, '威胁情报告警.xls', '威胁情报告警', 'M');
        } elseif (2 == $flag) {
            $Export = D('exportCsv');
            $Export->put_csv($tableHeader, $data, L("threat_intelligence_alarm").".csv");
        } elseif (3 == $flag) {
            $Export = D('exportPdf');
            $Export->export_pdf($tableHeader, $data, 'Threatenreport.pdf');
        } elseif (4 == $flag) {
            $Export = D('exportDoc');
            $Export->export_doc($tableHeader, $data, L("threat_intelligence_alarm").".doc");
        }
        unset($tableHeader, $Export);
        // } catch (Exception $e) {
        // $Public->managelog($_SESSION['login']['se_id'], $menuid, "download", "0");
        // throw_exception($e);
        // }
    }
下面是下载部分html

<a href="#" class="easyui-menubutton"  data-options="menu:'#download',iconCls:'icon-insert'">{:L("download_policy_template")}</a>
    <div id="download" style="width: 5%">
    <div οnclick="exportData(2);" >{:L("csv_download_recommend")}</div>
    <div οnclick="exportData(1);" >{:L("xls_download")}</div>
    <div οnclick="exportData(3);" >{:L("pdf_download")}</div>
    <div οnclick="exportData(4);" >{:L("doc_download")}</div>
    </div>
js方法部分
function exportData(flag){
  var downloadFlag = $('#downloadFlag').val();
  var PermitFlag = $('#PermitFlag').val();
  //if((downloadFlag==1 && PermitFlag==1) || PermitFlag==0){
  //下载excel文件
  location.href='__URL__/download/flag/'+flag+'/menuid/{$menuid}'
}



最后说明一下,在代码中出现的比如
{:L("pdf_download")}这个没有确定意义,就是普通汉字而已,因为我的项目需要用到中英文语言转换功能,这个L方法只是调用中英文公共语言而已。
比如
pdf_download中文翻译是pdf下载
pdf_download英文翻译是pdf download










  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值