• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP实现导出CSV格式文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

网站常常需要导出数据,常见的有CSV,XLS,XML 等待格式。
CSV 是较为常见的一种数据格式,由很多个逗号连接,与XLS 格式的数据相比,还是有一定的优势。

导出数据的两种思路:
1.当用户触发操作时,在服务器端生成一个可供用户下载的CSV文件。
2.当用户触发操作时,在客户端通过HTTP头信息与PHP结合,生成一个可供下载的CSV文件。

第一种实现方式,每一次下载都在服务器端生成一个CSV 文件,如果时间久了,那么服务器上的CSV 文件会越来越多,以后维护起来也不方便。
第二种实现方式,在没有优化的情况下,如果数据量大一些,那么生成CSV 会很慢,而且有可能由于网络等原因,造成数据丢失。

第一种方件的简单实现方式:
<?php 
$fp=fopen("test.csv",'w+');//生成CSV文件
$head_title=array('报表名','操作人','导出时间');
fputcsv($fp,$head_title);//生成报表头,
fclose($fp);//关闭操作文件


?>
第二种实现方式
<?php 
/**
gzip 压缩
**/
function ob_gzip($content)

if(!headers_sent()&&extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
{
$content=StringHelper::Encoding($content,'utf-8','GBK');
$content = gzencode($content,9);

header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}

return $content;
}

function export_csv($data=NULL)


$down_file='test.csv';
header("Content-Type: text/csv;charset=utf-8"); 
header("Content-Disposition: attachment; filename=$down_name"); 
header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); 
header('Expires:0'); 
header('Pragma:public');
ob_start('ob_gzip');//对输出数据进行压缩,可减少用户下载时候的等待时间
//ob_start(array(&$this, 'ob_gzip'));

echo "报表名,操作人,导出时间\n";

ob_end_flush();//结束压缩


}

 

?>

 

经测试:未使用GZIP原页面数据量大小为 20.61 KB (21,101 字节)
使用数据压缩后,页面大小为0.23 KB (236 字节)

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
redisList命令,php操作RedisList函数介绍发布时间:2022-07-10
下一篇:
php基本,输出,变量发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap