PHP如何导出数据
编辑时间:2020-03-06 11:39:00 作者:666666

PHP导出数据常用的三种文件格式

1.导出TXT文件,使用fopen写入到一个TXT文件中。做好换行、数据间隔、写入等操作

优点:使用简单,数据量超大也能够一直写入
缺点:如果不导入到excel很难分析数据,导入

使用方式

 $file = fopen('/data.txt', 'w'); //w 代表写

 //获取数据
 $data = [....]; //如果这个数据太大。可以使用分块获取。例如:laravel的chunk方法
 $count = count($data);

 $i = 0;
 while($i <= $count) {
     //写入时注意数据编码格式
     fwrite($file, $data[$i]['name'] . ' '); //注意间隔
     fwrite($file, $data[$i]['gender'] . '/r/n'); //注意系统的换行符
     $i++;
 }


 fclose($file);

注意事项

1.打开一个文件句柄如果不是一追加的方式打开,会覆盖里面的内容
2.循环写入数据时,尽可能使用while循环,节省运行内存使用量
3.换行符 PHP常量PHP_EOL会根据系统变换
a.windows平台相当于    echo "\r\n";
b.unix\linux平台相当于    echo "\n";
c.mac平台相当于    echo "\r";

将txt文件导入到excel

1.将txt文件导入到excel时需要注意,php写入txt文件一定要有统一的间隔。
导入操作顺序:
a.打开一个无数据的excel文档
b.在顶部导航栏选择数据
c.找到获取外部数据->自文本
d.选择所要导入的txt文件
e.根据提示选择分隔符号/固定宽度,选择编码格式
f.用本文方法导出的话选择 分隔符号选项,点击下一步
g.选择分隔符号,选择空格。点击下一步
h.根据列数据格式选择格式
i.点击完成

2.导出为CSV文件

优点:csv文件可以直接使用Excel软件打开,导入速度快,占用内存小
缺点:与excel软件有兼容问题

使用方式

set_time_limit(0); //让PHP脚本运行不会超时
ini_set('memory_limit', '256M'); //让PHP运行有更大的运行内存。确保不会内存溢出。需要根据自身服务器判断

//下载csv的文件名
$fileName = 'test.csv';
//设置头部信息
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');

$file = fopen('php://output', 'a');
$header = ['姓名', '性别', '手机号码']; //定义表头信息
//将数据编码转换成GBK格式
mb_convert_variables('GBK', 'UTF-8', $heade);
//将数据格式化为CSV格式并写入到output流中
fputcsv($file, $header);

//获取数据
$data = [.....]; //如果这个数据太大。可以使用分块获取。例如:laravel的chunk方法

//循环处理数据
foreach ($data as $row) {
    //将数据编码转换成GBK格式
    mb_convert_variables('GBK', 'UTF-8', $row);
    fputcsv($file, $row);
    //将已经存储到csv中的变量数据销毁,释放内存
    unset($row);
}

//关闭句柄
fclose($file);

注意事项

1.每写入一个变量到CSV文件中时,需要对变量进行销毁,释放内存
2.如果要在csv输出一个空行,向句柄写入一个空数组即可
3.需要将数据编码转换为GBK格式

导出为Excel文件

优点:完美的xlsx文件
缺点:使用时所占用,运行内存高,容易内存溢出,操作复杂,需要引入第三方类库 phpoffice/phpspreadsheet
类库composer地址:https://packagist.org/packages/phpoffice/phpspreadsheet

使用方式

待研究

导出数据的三种操作方式

1.HTTP请求接口运行代码
    如果超大量数据导出,会因为HTTP请求超时导致程序中断。目前我是没什么办法。
2.使用php命令直接运行php脚本 
    php data.php& //加&符号是为了让脚本能够一直后台运行,不中断。但是data.php的打印数据还是会占用终端页面
3.直接写sql语句查询后导出 
    网页版:phpmyadmin/阿里云RDS 软件:MySQL-Front(官方)/Navicat

 点赞 1
 收藏 0
 分享
来说两句吧
最新评论
    暂无评论
天气预报
万年历
2015年
7月
返回今天

博客声明

本博客属个人所有,不涉及商业目的。遵守中华人民共和国法律法规、中华民族基本道德和基本网络道德规范,尊重有节制的言论自由和意识形态自由,反对激进、破坏、低俗、广告、投机等不负责任的言行。所有转载的文撰写页面章、图片仅用于说明性目的,被要求或认为适当时,将标注署名与来源。避免转载有明确“不予转载”声明的作品。若不愿某一作品被转用,请及时通知本人。对于无版权或自由版权作品,本博客有权进行修改和传播,一旦涉及实质性修改,本博客将对修改后的作品享有相当的版权。二次转载者请再次确认原作者所给予的权力范围。

本博客所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。非经允许,不得用于赢利目的。本博客受中国知识产权、互联网法规和知识共享条例保护和保障,任何人不得进行旨在破坏或牟取私利的行为。本博客声明以简体中文版为准,不对其他语言版本负责。

如有侵权请及时联系我进行处理。邮箱youseeim666@163.com