[PHP] 使用php生成下载csv文件
2023-02-18 15:41:17 时间
原理很简单,就是用php输出一个header头,可以直接让浏览器下载文件
单元格内容用英文逗号分隔, 其中为了防止乱码,汉字部分会进行一个转码操作,从utf8转为gbk
为了使单元格看起来直观一点,会增加个\t ,这样就不会看的时候出现#########
比如下面这个把moveusers数组作为csv文件下载
if(isset($_REQUEST['act'])&& $_REQUEST['act']=="downloadAll") { $outformat = "entmove.csv"; $title = "邮箱名,姓名,邮箱密码,搬家状态,开始时间,结束时间,邮件总数,收取数,失败数\n"; $data = ""; foreach ($moveUsers as $b) { $status = iconv("utf-8", "gbk//IGNORE", $b['status_text']); $realName = iconv("utf-8", "gbk//IGNORE", $b['realName']); $data .= "{$b['account']}\t,{$realName}\t,{$b['password']},{$status}\t,{$b['movetime']}\t" . ",{$b['endtime']}\t,{$b['totle']},{$b['successnum']},{$b['failnum']}\n"; } $title = iconv("utf-8", "gbk//IGNORE", $title); $data = $title . $data; header("Cache-control: private"); header("Pragma: public"); header('Content-type: application/x-csv'); if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5')) { header("Content-Disposition: inline; filename=$outformat"); } else { header("Content-Disposition: attachment; filename=$outformat"); } echo $data; exit; }
相关文章
- Docker高级篇:Redis集群实战!从4主4从缩容到3主3从,该怎么处理?
- Redis 单线程模型 精讲
- Redis6.0使用了多线程还能保证线程安全么?-Redis6.0 多线程精讲
- Redis 搞懂缓存击穿、缓存穿透、缓存雪崩 产生原因及产线常用的解决方案
- 这样讲Redis哨兵机制Sentinel的工作原理,或许你真的能听懂~
- 这样讲Redis Cluster的工作原理,或许你真的能听懂~
- 实战:常见的延时队列解决方案及代码实现,真的很全:MQ、Redis、JDK队列、Netty时间轮~
- 这样讲Redis 主从复制的工作原理,或许你真的能听懂~
- 为什么有的人学完Netty 都还不知道BIO|NIO|AIO 的区别?
- 10分钟快速入门Netty 比写NIO爽百倍
- 熬夜手绘netty线程模型图 如果还不懂的话,那我...
- Netty 是如何解决拆包和 粘包问题 ?最后一种方案最香
- Netty 如何通过心跳检测机制实现空闲自动断开
- .NET Core如何通过认证机制访问Kafka?
- .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
- 一次 Redis 事务使用不当引发的生产事故
- 安卓项目五子棋代码详解(三)
- 安卓项目五子棋代码详解(二)
- 安卓项目五子棋代码详解(一)
- 【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)