添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
谦逊的佛珠  ·  VSTO 开发 EXCEL ...·  4 天前    · 
博学的瀑布  ·  Excel ...·  4 天前    · 
欢快的开水瓶  ·  CREATE INDEX ...·  3 周前    · 
奋斗的小马驹  ·  openlayers ...·  1 年前    · 
>本实例是采用THINKPHP5.1+ajax+phpexcel 来实现导出Excel功能。 由于ajax的返回值类型是json,text,html,xml类型,或者可以说ajax的接收类型只能是string字符串,不是流类型,所以无法实现文件下载,强行使用会使response出现乱码。因此,如果需要ajax来实现导出功能,则需要在方法中生成Excel文件,构造文件路径URL返回给ajax进行响应下载。 //前端代码:获取筛选条件参数后采用post方式传递URL中,在success回调函数中进行页面重定向,重定向的地址是Excel文件路径 导出Excel //控制器方法 * 导出Excel * @param array $params public function UserListExport(){ if(Request::isAjax()){ $userId = get_admin_id(); $userProfileService = new UserProfileService(); $settingService = new SettingService(); $excelUtil = new ExcelUtil(); $params = Request::post(); $where = $this->formatParams($params); $list = $userProfileService->selectUserAndProfile($where); $userList = $userProfileService->formatExportList($list['userList']); $systemInfo = $settingService->getByName(SettingType::SETTING_TYPE_SYSTEM); //设置excel表头 $header = ['id','用昵称','用户等级','用户手机号','真实姓名','身份证号','性别','实名状态','推荐人姓名','推荐人手机','推荐人等级']; //调用导出类,接收返回值(文件路径) $path = $excelUtil->export($userId,'用户列表','用户',$systemInfo['excel_export'],$header,$userList); if($path){ //路径拼接域名 $webSite = $settingService->getByName(SettingType::SETTING_TYPE_WEBSITE); $path = $webSite['basehost'].$path; $response = ['url'=>$path]; return $this->ajaxSuccess('获取成功',$response); return $this->ajaxError(); * 导出Excel方法 * @param int $userId 用户id * @param string $expTitle 表格标题 * @param string $expFileName 导出文件名 * @param string $expFileType 导出文件后缀:xls,csv * @param array $expHeadArr 导出文件列名 * @param array $expDataList 导出数据 public function export($userId,$expTitle,$expFileName,$expFileType,$expHeadArr,$expDataList){ $time = md5(date('YmdHis',time()).$userId); $expFileName .= "_".$time.".".$expFileType; //设置保存路径 $basePath = request()->env('ROOT_PATH').'public'; $baseUrl = DIRECTORY_SEPARATOR .implode(DIRECTORY_SEPARATOR, ['excel',date('Y-m-d',time())]). DIRECTORY_SEPARATOR; $path = $basePath.$baseUrl; //路径不存在则创建路径 if(!is_dir($path)){ mkdir($path, 0777, true); $path = $path.$expFileName; $objPHPExcel = new \PHPExcel(); //设置Excel属性 $objPHPExcel->getProperties() ->setCreator("Maarten Balliauw") //创建人 ->setLastModifiedBy("Maarten Balliauw") //最后修改人 ->setTitle("Office 2007 XLSX Test Document") //设置标题 ->setSubject("Office 2007 XLSX Test Document") //设置主题 ->setDescription("Test document ") //设置备注 ->setKeywords( "office 2007 openxml php") //设置关键字 ->setCategory( "Test result file"); //设置类别 //设置Excel样式 //设置第一行(标题)合并单元格 $key = ord('A'); $num = count($expHeadArr); $lastHead = chr($key+$num); $mergeCells = 'A1:'.$lastHead.'1'; $objPHPExcel->getActiveSheet()->mergeCells($mergeCells); //单元格居中、字体大小、粗体 $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); //设置表头信息 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle); foreach($expHeadArr as $head){ $colum = chr($key); $objPHPExcel->getActiveSheet()->setCellValue($colum.'2',$head); $objPHPExcel->getActiveSheet()->getStyle($colum.'2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER); //表头文字居中 $key += 1; //写入数据 $colum = 3; foreach($expDataList as $key =>$row){//行写入 $span = ord("A"); foreach($expDataList[$key] as $keyName => $value){//列写入 $objPHPExcel->getActiveSheet()->setCellValue(chr($span).$colum,$value); $objPHPExcel->getActiveSheet()->getStyle(chr($span).$colum)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); //文字左对齐中 $objPHPExcel->getActiveSheet()->getColumnDimension(chr($span))->setWidth(13);//设置宽度 $span ++; $colum ++; $objPHPExcel->setActiveSheetIndex(0); ob_end_clean();//清除缓冲区,避免乱码 //"Excel2007"生成2007版本的xlsx,"Excel5"生成2003版本的xls $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //保存路径 $objWriter->save($path); $filePath = str_replace('\\','/',$baseUrl.$expFileName); return $filePath; //直接弹出提示下载,不生成文件 header('pragma:public'); header("Content-Disposition:attachment;filename=$expFileName"); header('Cache-Control: max-age=0'); $objWriter = PHPExcel\_IOFactory:: *createWriter*($objPHPExcel, 'Excel2007'); $objWriter->save( 'php://output');
  • composer安装与使用
  • python
  • python3执行tarfile解压文件报错:tarfile.ReadError:file could not be opened successfully
  • golang
  • 单元测试框架
  • Golang内置testing包
  • GoConvey库
  • testify库
  • 打桩与mock
  • GoMock框架
  • Gomonkey框架
  • HTTP Mock
  • httpMock
  • mux库/httptest
  • MYSQL
  • SQL语言的分类
  • 事务(重点)
  • 导入导出数据库
  • 优化mysql数据库的方法
  • MyISAM与InnoDB区别
  • 外连接、内连接的区别
  • 物理文件结构
  • PostgreSQL
  • pgsql常用命令
  • pgsql应用目录(bin目录)文件结构解析
  • pg_ctl
  • initdb
  • clusterdb
  • cluster命令
  • createdb
  • dropdb
  • createuser
  • dropuser
  • pg_config
  • pg_controldata
  • pg_checksums
  • pgbench
  • pg_basebackup
  • pg_dump
  • pg_dumpall
  • pg_isready
  • pg_receivewal
  • pg_recvlogical
  • pg_resetwal
  • pg_restore
  • pg_rewind
  • pg_test_fsync
  • pg_test_timing
  • pg_upgrade
  • pg_verifybackup
  • pg_archivecleanup
  • pg_waldump
  • postgres
  • reindexdb
  • vacuumdb
  • pgsql数据目录文件结构解析
  • pgsql数据目录文件结构解析
  • postgresql.conf解析
  • pgsql系统配置参数说明
  • pgsql索引类型
  • 四种索引类型解析
  • 索引之ctid解析
  • 索引相关操作
  • pgsql函数解析
  • pgsql系统函数解析
  • pgsql窗口函数解析
  • pgsql聚合函数解析
  • pgsql系统表解析
  • pg_stat_all_indexes
  • pg_stat_all_tables
  • pg_statio_all_indexes
  • pg_statio_all_tables
  • pg_stat_database
  • pg_stat_statements
  • pg_extension
  • pg_available_extensions
  • pg_available_extension_versions
  • pgsql基本原理
  • 进程和内存结构
  • 数据文件的内部结构
  • 垃圾回收机制VACUUM
  • 事务日志WAL
  • 事务ID-txid
  • 元组结构-Tuple Structure
  • 事务状态记录-Commit Log (clog)
  • 事务快照-Transaction Snapshot
  • 事务快照实例
  • 事务隔离级别
  • 读已提交-Read committed
  • 可重复读-Repeatable read
  • 可序列化-Serializable
  • 读未提交-Read uncommitted
  • 扩展机制解析
  • 扩展的定义
  • 扩展的安装方式
  • 自定义创建扩展
  • 扩展的管理
  • 扩展使用实例
  • 在pgsql中使用last、first聚合函数
  • pgsql模糊查询不走索引的解决方案
  • pgsql的pg_trgm扩展解析与验证
  • LNMP环境搭建
  • 一键安装包
  • 配置文件目录
  • 服务器管理系统
  • 宝塔(Linux)
  • 安装与使用
  • 开放API
  • 自定义apache日志
  • 一键安装包LNMP1.5
  • LNMP1.5:添加、删除站点
  • LNMP1.5:php多版本切换
  • LNMP1.5 部署 thinkphp项目
  • Operation not permitted解决方法
  • Nginx
  • Nginx的产生
  • 正向代理和反向代理
  • Linux常用命令
  • 目录与文件相关命令
  • 目录操作命令
  • 文件编辑命令
  • 文件查看命令
  • 文件查找命令
  • 文件权限命令
  • 文件上传下载命令
  • 用户和群组相关命令
  • 用户与用户组的关系
  • 用户相关的系统配置文件
  • 用户相关命令
  • 用户组相关命令
  • 压缩与解压相关命令
  • .zip格式
  • .tar.gz格式
  • .gz格式
  • .bz2格式
  • 查看系统版本
  • cpuinfo详解
  • meminfo详解
  • getconf获取系统信息
  • 磁盘空间相关命令
  • 查看系统负载情况
  • 系统环境变量
  • 网络相关命令
  • ip命令详解
  • ip命令格式详解
  • ip address命令详解
  • ip link命令详解
  • ip rule命令详解
  • ip route命令详解
  • nslookup命令详解
  • traceroute命令详解
  • netstat命令详解
  • route命令详解
  • tcpdump命令详解
  • 系统进程相关命令
  • ps命令详解
  • pstree命令详解
  • kill命令详解
  • 守护进程-supervisord
  • 性能监控相关命令
  • top命令详解
  • iostat命令详解
  • pidstat命令详解
  • iotop命令详解
  • mpstat命令详解
  • vmstat命令详解
  • ifstat命令详解
  • sar命令详解
  • iftop命令详解
  • 定时任务相关命令
  • ssh登录远程主机
  • ssh口令登录
  • ssh公钥登录
  • ssh带密码登录
  • ssh端口映射
  • ssh配置文件
  • ssh安全设置
  • history命令详解
  • linux开启操作日志记录
  • git初始化本地仓库-https
  • git初始化仓库-ssh
  • git-查看和设置config配置
  • docker
  • docker原理
  • docker镜像原理
  • docker Overlay2 文件系统原理
  • docker日志原理
  • docker日志驱动
  • docker容器日志管理
  • 验证容器的启动是作为Docker Daemon的子进程
  • 验证syslog类型日志驱动
  • 验证journald类型日志驱动
  • 验证local类型日志驱动
  • 修改容器的hostname
  • 修改容器的hosts
  • 验证联合挂载技术
  • 验证启动多个容器对于磁盘的占用情况
  • 验证写时复制原理
  • 验证docker内容寻址原理
  • docker存储目录
  • /var/lib/docker目录
  • image目录
  • overlay2目录
  • 具名挂载和匿名挂载
  • 数据卷容器
  • Dockerfile详解
  • dockerfile指令详解
  • 实例:构造centos
  • 实例:CMD和ENTRYPOINT的区别
  • docker网络详解
  • docker-compose
  • redis
  • redis的数据类型和应用场景
  • redis持久化
  • RDB持久化
  • AOF持久化
  • redis缓存穿透、缓存击穿、缓存雪崩
  • 常见网络攻击类型
  • CSRF攻击
  • XSS攻击
  • SQL注入
  • Cookie攻击
  • 历史项目经验
  • 图片上传项目实例
  • 原生php上传方法实例
  • base64图片流
  • tp5的上传方法封装实例
  • 多级关系的递归查询
  • 数组转树结构
  • thinkphp5.1+ajax实现导出Excel
  • JS 删除数组的某一项
  • 判断是否为索引数组
  •