本文共 2233 字,大约阅读时间需要 7 分钟。
PHP 导入和导出 CSV 文件
在 PHP 开发中,CSV 文件的处理是非常常见的操作。以下是关于如何将数据导入和导出 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;} 使用方法:
将数据导出为 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();} 使用方法:
mb_convert_encoding 将 UTF-8 转换为目标编码(如 cp936),以避免字符显示问题。通过以上方法,您可以轻松地在 PHP 中完成 CSV 文件的导入和导出,方便数据的存储和分享。
转载地址:http://xvtfk.baihongyu.com/