php导出数据(csv)
为什么选择csv而不是excel,其中最大的一个区别就是CSV格式文件的最大行数是没有上限的,一般xls的格式最大支持只能支持六万行的数据。
今天就分享一下怎么把数据导出到csv表。
示例一:
从浏览器导出数据到csv表
/**
* 导出数据到csv表
*/
function exportCsv()
{
// 需要导出的内容
$data = [
['name' => '李一', 'sex' => '男'],
['name' => '李二', 'sex' => '女'],
['name' => '李三', 'sex' => '男'],
];
// 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
$filename = $this->utfToGbk('文件名.csv');
// 拼接文件信息,这里注意两点
// 1、字段与字段之间用逗号分隔开
// 2、行与行之间需要换行符
$fileData = $this->utfToGbk('姓名, 性别') . "\n";
foreach ($data as $value) {
$temp = $value['name'] . ',' .$value['score'];
$fileData .= $this->utfToGbk($temp) . "\n";
}
// 头部信息配置
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=" . $filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $fileData;
exit;
}
/**
* 字符转换(utf-8 => GBK)
*/
function utfToGbk($data)
{
return iconv('utf-8', 'GBK', $data);
}
示例二:
在服务器生成CSV文件
/**
* 生成csv文件
*/
public function downLoadCsv()
{
// 需要导出的内容
$data = [
['name' => '李一', 'sex' => '男'],
['name' => '李二', 'sex' => '女'],
['name' => '李三', 'sex' => '男'],
];
// 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
$filename = $this->utfToGbk('生成csv文件.csv');
// 拼接文件信息,这里注意两点
// 1、字段与字段之间用逗号分隔开
// 2、行与行之间需要换行符
$fileData = $this->utfToGbk('姓名, 性别') . "\n";
foreach ($data as $value) {
$temp = $value['name'] . ',' .
$value['score'];
$fileData .= $this->utfToGbk($temp) . "\n";
}
$filePath = __DIR__ . '/' . $filename;
// 将一个字符串写入文件
file_put_contents($filePath, $fileData);
return $filePath;
}
/**
* 字符转换(utf-8 => GBK)
*/
public function utfToGbk($data)
{
return iconv('utf-8', 'GBK', $data);
}
发表评论 取消回复