html:

  <button class="btn btn-default" onclick="logToExcel('{:url('userLogToExcel',['day' => '3'])}')">3天日志导出</button>

js:

function logToExcel(url){
$('.masking').show();
$.ajax({
url:url,
type:"post",
processData : false,
contentType : false ,
success:function (data) {
if(data.result){
var form=$("<form>");//定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","post");
form.attr("action",data.data);//请求地址
$("body").append(form);//将表单放置在web中
//传递参数
var input1 = $("<input>");
input1.attr("type", "hidden");
input1.attr("name", "fileName");
input1.attr("value", data.fileName);
form.append(input1); var input2 = $("<input>");
input2.attr("type", "hidden");
input2.attr("name", "fileDir");
input2.attr("value", data.fileDir);
form.append(input2); form.submit().remove();//表单提交
$('.masking').hide();
}else{
alert(data.msg);
}
}
})
} php:
/**
* 用户操作日志导出Excel表
* @internal param int $day 导出日志时间
* @return \think\response\Json
* @reviewer
*/
public function userLogToExcel(){
set_time_limit(0);
$time = date('Y-m-d',time());
$fileName = 'userlog-' . $time;
$day = Request::instance()->param('day');
//$day = input('day');
if ($day == '7'){
$start_time = strtotime('-7 day');
}else{
$start_time = strtotime('-3 day');
}
$startTime = date('Y-m-d',$start_time);
$endTime = date('Y-m-d H:i:s',time());
$userID = '';
$firstRow = '';
$listRows = '';
$logUser = new UserLog();
$list = $logUser->getLogList($userID,$startTime,$endTime,$firstRow, $listRows);
$listID = array();
foreach ($list as $k => $v){
$listID[$k] = $v['user_id'];
}
$listId = array_unique($listID);
$userDetail = new UserInfo();
$userData = $userDetail->getUserInfo($listId);
$userInfo = [];
foreach ($userData as $key => $value){
$userInfo[$value['user_id']] = $value;
}
$taskData = [];
foreach ($list as $k => $v){
$taskData[$k] = [
$k+1,
$userInfo[$v['user_id']]['user_name'],
$userInfo[$v['user_id']]['real_name'],
$v['log_info'],
$v['log_ip'],
$v['log_area'],
$v['log_url'],
$v['log_time'],
];
}
$taskNewData = ['序号', '用户名', '真实名', '操作信息', 'ip地址', '登陆地', '操作url','操作时间'];
array_unshift($taskData, $taskNewData);
$filePath = ROOT_PATH . 'public' . DS . 'static' . DS . 'file' . DS . 'tmp' . DS; try{
Excel::generateExcel($fileName, $taskData, false, $filePath);
}catch (\Exception $e){
return json(['result' => false, 'msg' => '日志导出失败']);
}
return json(['result' => true, 'fileName' => $fileName.'.xlsx', 'fileDir' => $filePath, 'data' => '/admin/log_user/sendFile']);
} /**
* 将服务器文件发送到浏览器
* @internal param $fileDir 文件路径
* @internal param $fileName 文件名称
* @return Excel
*/
public function sendFile()
{
$fileDir = Request::instance()->param('fileDir');
$fileName = Request::instance()->param('fileName');
$fileName = iconv('gbk','utf-8', $fileName);
//检查文件是否存在
if (!file_exists($fileDir . $fileName)) {
echo "<meta http-equiv='refresh' content='3; url={$_SERVER['HTTP_REFERER']}'>";
echo "文件不存在";
exit();
} else {
//打开文件
$file = fopen($fileDir . $fileName, "r");
//输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . filesize($fileDir . $fileName));
Header("Content-Disposition: attachment; filename=" . $fileName);
//输出文件内容
//读取文件内容并直接输出到浏览器
echo fread($file, filesize($fileDir . $fileName));
fclose($file);
exit();
}
}
												

ajax导出excel文件并增加等待动画效果的更多相关文章

  1. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  2. 如何使用JavaScript导入和导出Excel文件

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. JavaScript是一个涵盖多种框架.直译式.可以轻松自定义客户端的脚本 ...

  3. ExtJS Grid导出excel文件

    ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...

  4. java POI导出Excel文件数据库的数据

    在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...

  5. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

  6. 纯前端实现数据导出excel文件

    一  安装依赖 npm install -S file-saver xlsx npm install -D script-loader 二 新建文件夹 在网上百度引入即可 三 在main.js中引入 ...

  7. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  8. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  9. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

随机推荐

  1. [Usaco2006 Open]County Fair Events 参加节日庆祝

    Description Farmer John has returned to the County Fair so he can attend the special events (concert ...

  2. 2017 JUST Programming Contest 3.0 I. Move Between Numbers

    I. Move Between Numbers time limit per test 2.0 s memory limit per test 256 MB input standard input ...

  3. 操作JavaScript的Alert弹框

    @Testpublic void testHandleAlert(){ WebElement button =driver.findElement(By.xpath("input" ...

  4. Mac下Eclipse/adb无法调试MX5手机

    前提是环境已经配置好,其他手机可以连接但MX系列不可以 解决方法:打开终端 echo 0x2a45 >> ~/.android/adb_usb.ini adb kill-server ad ...

  5. swift 使用计算属性+结构管理内存

    class GooClass { deinit { print("aaaaaaaa") } var str = "gooClass" } struct GooS ...

  6. Discuz3.1登录QQ互联显示redirect uri is illegal(100010)的解决

    QQ互联最近也是BUG不断,引起了很多用户的不满,从早前关闭群组功能,到发布2.0接口标准,引发系列站长用户的连锁反应.而Discuz从X3开始,为了应对QQ互联的2.0接口标准,采用了云平台来整合Q ...

  7. jQuery 全选、全不选、反选

    <!DOCTYPE html> <html lang="en"> <head> <title></title> < ...

  8. ANALYZE - 收集与数据库有关的统计

    SYNOPSIS ANALYZE [ VERBOSE ] [ table [ (column [, ...] ) ] ] DESCRIPTION 描述 ANALYZE 收集有关 PostgreSQL ...

  9. crontab 每月最后一天执行命令

    没有什么是解决不了的事情,如果有,只是我们的知识不够精通,学得不扎实 需求:有一个程序,需要在每个月的最后一天执行 例如:每个月的最后一天早上8:00 打印 dede 到  /tmp/test.txt ...

  10. 删数问题(Noip1994)

    1321:[例6.3]删数问题(Noip1994) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 5127     通过数: 1595 [题目描述] 输入一个高精度 ...