【问题标题】:Make tabular Data downloadable as a CSV file使表格数据可下载为 CSV 文件
【发布时间】:2021-11-22 20:20:05
【问题描述】:

我有一个网站,它以标准 HTML 表格形式提供数据,并显示在 7 列中。在后端,数据存储在 MySQL 中,并通过 PHP 显示在网页上。

网站访问者一直要求以 CSV 文件的形式提供数据以供下载,我可以提供该功能。

通过一键下载到 CSV 文件来提供有限数量的列(比如 7 列中的 3 列)的最佳方式是什么?

注意:这个问题不是关于网站访问者使用 python 或其他脚本抓取数据,而是关于一个愿意提供下载数据选项的网站管理员在 CSV 文件中。

搜索并检查了此线程XML or CSV for "Tabular Data",但它没有准确的答案,因此提出了问题。

【问题讨论】:

  • 你的后端堆栈是什么?
  • @Newbie - 正如我提到的,在后端,数据存储在 MySQL 中。
  • 我们需要更多信息。您使用什么编程语言与 MySQL 交互?我几乎完全做到了这一点,例如,使用 Perl。
  • @polyhat 它的 PHP 和 MYSql 组合
  • 我不知道如何使用 PHP。使用 Perl,可以分叉该进程并使用 IO::Compress::Zip 之类的包返回一个 zip 文件以供下载到浏览器。

标签: mysql csv


【解决方案1】:

创建一个新的 PHP 文件(页面),而不是将内容呈现为 HTML,而是将其呈现为 CSV。然后操纵响应标头以使浏览器清楚它是一个要下载的文件。这就是您的 .php 文件的外观:

<?php

    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="file.csv"');

    // ... QUERY FOR DATA

    $outstream = fopen("php://output", 'w');
    function __outputCSV(&$vals, $key, $filehandler) {
      fputcsv($filehandler, $vals, ',', '"');
    }
    // CSV header
    __outputCSV(['header1', 'header2', ...]);
    // CSV body
    array_walk($data, '__outputCSV', $outstream);
    fclose($outstream);

?>

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多