PHP操作csv文件导入+导出
将 CSV 文件路径传递给函数。 指定要读取的行数。 可选设置起始行数。 函数将返回一个二维数组,其中每个单元格对应 CSV 文件的一行数据。
将要导出的数据数组传递给函数。 可选传递标题数组,用于生成 CSV 文件的表头。 可选指定 CSV 文件名称,默认使用当前时间生成文件名。 函数会自动弹出下载框,生成符合 CSV 格式的文件。
发布日期:2025-05-04 11:22:34
浏览次数:5
分类:精选文章
本文共 2177 字,大约阅读时间需要 7 分钟。
PHP 导入和导出 CSV 文件
在 PHP 开发中,CSV 文件的处理是非常常见的操作。以下是关于如何将数据导入和导出 CSV 文件的详细说明。
一、PHP 导入 CSV 文件
要实现从 CSV 文件中读取数据,可以编写一个函数来获取指定行数的数据。以下是一个示例函数:
function csv_get_lines($csvfile, $lines, $offset = 0) { if (!$fp = fopen($csvfile, 'r')) { return false; } $i = $j = 0; // 跳过起始行数 while (false !== ($line = fgets($fp))) { if ($i++ < $offset) { continue; } break; } $data = array(); // 读取指定行数的数据 while ($j++ < $lines && !feof($fp)) { $data[] = fgetcsv($fp); } fclose($fp); return $data;} 使用方法:
二、PHP 导出 CSV 文件
将数据导出为 CSV 文件时,可以使用以下函数来生成符合 CSV 格式的文件内容:
function csv_export($data, $titleList = array(), $fileName = '') { @ini_set("max_execution_time", "3600"); $csvData = ''; // 处理标题 $nums = count($titleList); for ($i = 0; $i < $nums - 1; $i++) { $csvData .= '"' . $titleList[$i] . '",'; } if ($nums > 0) { $csvData .= '"' . $titleList[$nums - 1] . "\"\r\n"; } // 处理数据 foreach ($data as $key => $row) { $i = 0; foreach ($row as $_key => $_val) { $_val = str_replace("\"", "\"\"", $_val); if ($i < ($nums - 1)) { $csvData .= '"' . $_val . '",'; } else { $csvData .= '"' . $_val . "\"\r\n"; } $i++; } unset($data[$key]); // 去掉数组键 } // 转换编码并保存文件 $csvData = mb_convert_encoding($csvData, "cp936", "UTF-8"); $fileName = empty($fileName) ? date('Y-m-d-H-i-s', time()) : $fileName; $fileName .= '.csv'; // 设置响应头并输出 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 $csvData; die();} 使用方法:
注意事项:
- 文件路径:确保 CSV 文件路径正确,避免路径错误。
- 数据格式:在导出前,建议对数据进行适当的处理,确保字符无特殊符号或转义字符。
- 编码转换:使用
mb_convert_encoding将 UTF-8 转换为目标编码(如 cp936),以避免字符显示问题。
通过以上方法,您可以轻松地在 PHP 中完成 CSV 文件的导入和导出,方便数据的存储和分享。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2026年06月17日 16时52分10秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP如何获取当前页面的最后修改时间
2023-03-01
PHP如何读取json数据
2023-03-01
PHP字符串
2023-03-01
PHP字符串递增
2023-03-01
php学习之基础语法
2023-03-01
RabbitMQ集群 - 仲裁队列、Raft协议(最详细的选举流程)
2023-03-01
PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
2023-03-01
PHP学习总结(12)——PHP入门篇之变量
2023-03-01
PHP学习总结(13)——PHP入门篇之常量
2023-03-01
PHP学习总结(14)——PHP入门篇之常用运算符
2023-03-01
PHP学习总结(1)——PHP入门篇之PHP可以做什么?
2023-03-01
PHP学习总结(2)——PHP入门篇之PHP代码标识
2023-03-01
PHP学习总结(3)——PHP入门篇之PHP的echo语句
2023-03-01
PHP学习总结(4)——PHP入门篇之PHP计算表达式
2023-03-01
PHP学习总结(5)——PHP入门篇之PHP字符串
2023-03-01
PHP学习总结(6)——PHP入门篇之PHP语句结束符
2023-03-01
PHP学习总结(7)——PHP入门篇之PHP注释
2023-03-01
rabbitmq重启失败
2023-03-01
PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
2023-03-01
php学习笔记---php调试和开发工具整理
2023-03-01