这是我做项目时遇到的一个需求,我做的这个项目后台是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