使用php pdo将JSON转换为Excel文件

我有这个文件给我从MySQL数据库的JSON输出:

<?php require 'core/init.php'; $general->logged_out_protect(); $username = htmlentities($user['username']); $user_id = htmlentities($user['id']); try { $result = $db->prepare('SELECT ID,br,sufiks,kupac,datum,rok,status FROM racuni WHERE user_id=:user_id'); $result->bindParam(':user_id', $user_id); $result->execute(); //$res = $result->fetchAll(PDO::FETCH_ASSOC); /* Extract the information from $result */ foreach($result as $r) { $temp = array(); // the following line will be used to slice the Pie chart $temp['ID'] = (int) $r['ID']; $temp['br'] = $r['br'].$r['sufiks']; $temp['kupac'] = (string) $r['kupac']; $temp['datum'] = (string) $r['datum']; $temp['rok'] = (string)$r['rok']; $temp['status'] = (string)$r['status']; // $rs = $db->prepare('SELECT sum(radnih_sati) FROM track_radnici WHERE user_id=:user_id AND id_radnika=:id'); // $rs->bindParam(':user_id', $user_id); // $rs->bindParam(':id', $r['ID']); //$rs->bindParam(':radnici', $radnici); // $rs->execute(); // $sumRows = $rs->fetchColumn(); // $temp['7'] = (int) $sumRows; // Values of each slice $rows[] = $temp; } $table['data'] = $rows; $jsonTable = json_encode($table); //echo $jsonTable; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } echo $jsonTable; ?> 

一切都很好这个代码给我这个输出:

 {"data":[{"ID":1,"br":"1-2015","kupac":"ADAkolor","datum":"2015-05-19","rok":"2015-05-21","status":"placeno"},{"ID":2,"br":"2-2015","kupac":"Milenk","datum":"2015-05-27","rok":"2015-05-28","status":""}]} 

我如何将这个JSON输出转换成Excel文件? 做这个的最好方式是什么? 或者一些其他方式wit J JSON? 你build议什么?

这是不符合你的要求,因为它不涉及JSON

如果你想要它的优秀,你可以使用INTO OUTFILE并生成Excel可以读取的csv 。 也许你需要真正的.xlsx文件?

 SELECT ID,br,sufiks,kupac,datum,rok,status INTO OUTFILE 'C:/excel.csv' CHARACTER SET latin1 FIELDS TERMINATED BY '\t' -- this is tab separated LINES TERMINATED BY '\r\n' FROM racuni WHERE user_id=:user_id; 

如果你想列来,你必须添加这一行之前像这样的SELECT。

 SELECT 'ID','br','sufiks','kupac','datum','rok','status' UNION SELECT ID,br,sufiks,kupac,datum,rok,status INTO OUTFILE 'C:/excel.csv' CHARACTER SET latin1 FIELDS TERMINATED BY '\t' -- this is tab separated LINES TERMINATED BY '\r\n' FROM racuni WHERE user_id=:user_id; 

我不知道它会工作,但试试看。

 $result = $db->prepare('SELECT ''ID'',''br'',''sufiks'',''kupac'',''datum'',''rok'',''status'' UNION SELECT ID,br,sufiks,kupac,datum,rok,status INTO OUTFILE ''C:/excel.csv'' CHARACTER SET latin1 FIELDS TERMINATED BY ''\t'' LINES TERMINATED BY ''\r\n'' FROM racuni WHERE user_id=:user_id;'); $result->bindParam(':user_id', $user_id); $result->execute(); 

那么迭代最不需要?