博客
关于我
PHP操作csv文件导入+导出
阅读量:794 次
发布时间:2023-03-01

本文共 2233 字,大约阅读时间需要 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;
}

使用方法:

  • 将 CSV 文件路径传递给函数。
  • 指定要读取的行数。
  • 可选设置起始行数。
  • 函数将返回一个二维数组,其中每个单元格对应 CSV 文件的一行数据。

  • 二、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 文件的表头。
  • 可选指定 CSV 文件名称,默认使用当前时间生成文件名。
  • 函数会自动弹出下载框,生成符合 CSV 格式的文件。

  • 注意事项:

    • 文件路径:确保 CSV 文件路径正确,避免路径错误。
    • 数据格式:在导出前,建议对数据进行适当的处理,确保字符无特殊符号或转义字符。
    • 编码转换:使用 mb_convert_encoding 将 UTF-8 转换为目标编码(如 cp936),以避免字符显示问题。

    通过以上方法,您可以轻松地在 PHP 中完成 CSV 文件的导入和导出,方便数据的存储和分享。

    转载地址:http://xvtfk.baihongyu.com/

    你可能感兴趣的文章
    ok6410内存初始化
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    Openresty框架入门详解
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    Oracle 递归
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>
    oracle中关于日期问题的汇总!
    查看>>
    Oracle中常用的语句
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    orm总结
    查看>>
    paddle的两阶段基础算法基础
    查看>>
    SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
    查看>>
    Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
    查看>>