Wordpress将数组转换为csv以供下载

时间:2017-02-07 18:44:04

标签: php wordpress csv export

我有以下函数从数据库查询中获取结果数组。当我遍历查询结果时,我填充数组。同时我创建了一个html表。在输出html表之后,我调用函数download_csv($ csvArray),但没有发生CSV的下载,它只是显示数组的内容,好像我在数组上做了一个var_dump。我可以确认数组的内容是否正确。

注意:这是在外部网页上完成的,而不是来自管理区域。

是否需要调用一些wordpress函数来允许下载或者我遗漏了什么?

function download_csv($csvArray) {
    $file_name = 'report.csv';
    //output headers so that the file is downloaded rather than displayed
    header("Content-Type: text/csv");
    header("Content-Disposition: attachment; filename=$file_name");
    //Disable caching - HTTP 1.1
    header("Cache-Control: no-cache, no-store, must-revalidate");
    //Disable caching - HTTP 1.0
    header("Pragma: no-cache");
    //Disable caching - Proxies
    header("Expires: 0");

    //Start the ouput
    $output = fopen("php://output", "w");

    //Then loop through the rows
    foreach ($csvArray as $fields) {
        fputcsv($output, $fields);
    }
    //Close the stream off
    fclose($output);
    die();
}

1 个答案:

答案 0 :(得分:1)

以下代码可帮助您将数组转换为CSV并使其自动下载更改模具();函数exit();并使用Implode功能。它会起作用。

header('Content-Type: text/csv; charset=UTF-8');
  header('Content-Disposition: attachment; filename=sample.csv');
  header('Pragma: no-cache');
  header('Expires: 0');
  $fp = fopen('php://output', 'w');
  //ex: $list={...};


  foreach ($list as $fields) 
  {
  fputcsv($fp,implode($fields, ','));
  }
  fclose($fp);
  exit();