【问题标题】:Export csv file from array从数组中导出 csv 文件
【发布时间】:2016-05-31 05:40:44
【问题描述】:

我使用下面的代码来导出多维数组。我正在使用 CodeIgniter 框架(2.1.0 版本)

问题:

  1. 我在数组中没有任何双引号/单引号,但在 csv 文件中某些字段有双引号。

  2. 每个 csv 文件都给我前两行空白,然后我可以看到内容

代码:

function array_to_csv($array, $download = "") {
    if ($download != "") {
        header('Content-Type: text/csv');
        header('Content-Disposition: attachement; filename="'.$download.
            '"');
        header("Pragma: no-cache");
        header("Expires: 0");
    }

    ob_start();
    $f = fopen('php://output', 'w') or show_error("Can't open php://output");
    $n = 0;
    foreach($array as $line) {
        $line = str_replace('"', '', $line); //Try to resolve first problem but it doesn't work for me.
        $n++;
        if (!fputcsv($f, $line)) {
            show_error("Can't write line $n: $line");
        }
    }
    fclose($f) or show_error("Can't close php://output");
    $str = ob_get_contents();
    ob_end_clean();

    if ($download == "") {
        return $str;
    } else {
        echo $str;
    }
}

【问题讨论】:

  • 如果上述代码中需要任何代码优化以使其更快,请建议我
  • 在我看来你的事情有点过于复杂了。为什么要搞乱 ob_start 等?发送标题后,您可以将每一行直接写入 php://output。我不明白为什么你在开始时会出现空白行

标签: php codeigniter csv


【解决方案1】:

试着在这里打电话:

$line = str_replace('"', '', $line)

修剪功能。

【讨论】:

  • 感谢您的回复。但是这个我已经试过了,你可能会在代码中看到。
猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 2015-02-04
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2016-02-24
  • 2013-02-28
相关资源
最近更新 更多