首页 > 解决方案 > 从 JSON 数据生成自定义 CSV 导出

问题描述

在我的一个 ModelAdmin 选项卡中,我有一列包含 JSON 编码的数据,我想将其转换为 CSV 表并导出。我见过的大多数问题都是直接从表中导出数据行,但是如何先从其中一列中提取数据,然后再将其转换为 CSV 表进行导出。

任何想法将不胜感激。

标签: phpsilverstripe

解决方案


当您使用 PHP 并希望输出为 CSV 时,您应该做的第一件事就是将该 JSON 转换为 Array。然后您可以使用一些 PHP 函数将结果提示为 CSV。让我们编码:

$arr = json_decode($jsonInput, true);
if(empty($arr)) {
     die("INVALID JSON");
}
$filename = "your-filename.csv";
$now = gmdate("D, d M Y H:i:s");
header("Expires: $now GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");  
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/csv");
header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary");
$df = fopen('php://output', 'w');
fputs($df, $bom = ( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
fputcsv($df, array_keys(reset($arr)), ';');
foreach($arr as $row) {
    fputcsv($df, $row, ';');
}
fclose($df);

推荐阅读