Anha !! in realtà ho uno PHP Class
che funziona piuttosto bene con same json object key
(si sta utilizzando diffrent json key nel terzo set). Quindi, se lo desideri, puoi modificare il mio PHP Export Class
come vuoi (per chiave di oggetto diversa). Qui ho intenzione di spiegare un esempio e di condividere la mia lezione con te. La speranza, dopo modificare questa classe il vostro desiderio si avvera :)
PHP Export Class [Class.Export.php]
<?php
/**
* Class Export
*
* Send JSON data and make an array to save as Excel file
*
* @author neeraj.singh
* @version 1.0
*
*/
// Class Start Here
class Export {
/**
* Set Excel file name
*
* @var string
*/
public $filename = 'excel-doc';
/**
* Set Excel field title
*
* @var string
*/
public $custom_titles;
/**
* Get JSON data and convert in Excel file
*/
public function saveAsExcel() {
$CSV = trim ($_POST ['exportdata']);
if (function_exists ('json_decode')) {
$data = json_decode ($CSV, true);
if (count ($data) > 0) {
// call excel export
$this->_createExcelByArray ($data);
} else {
die ("Sorry!! array not build.");
}
} else {
die ("Sorry!! json_decode not working on this server.");
}
}
/**
* Take an array and create
* Excel file
*
* @param array $dataArray
*/
private function _createExcelByArray($dataArray) {
// set excel file name
$this->filename = 'DEMO-Excel' . '-' . date ('d-m-Y-H-s');
// get array field by first element of array
foreach ($dataArray [0] as $k => $v) {
$field [] = $k;
}
// get total no of field in array
$totalFields = count ($field);
$i = $j = 0;
// get array values
foreach ($dataArray as $v) {
for($j; $j < $totalFields; $j ++) {
$value [$i] [] = $v [$field [$j]];
}
$i ++;
$j = 0;
}
$this->initExcel ($field, $value);
}
/**
* Creating an Excel file with array data
*
* @param array $titles
* @param array $array
*/
public function initExcel($titles, $array) {
$data = NULL;
if (! is_array ($array)) {
die ('The data supplied is not a valid array');
} else {
$headers = $this->titles ($titles);
if (is_array ($array)) {
foreach ($array as $row) {
$line = '';
foreach ($row as $value) {
if (! isset ($value) or $value == '') {
$value = "\t";
} else {
$value = str_replace ('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= iconv ("UTF-8", "GB18030//IGNORE", trim ($line)) . "\n";
}
$data = str_replace ("\r", "", $data);
$this->generate ($headers, $data);
}
}
}
/**
* Create excel header and
* write data into file
*
* @param string $headers
* @param string $data
*/
private function generate($headers, $data) {
$this->set_headers();
echo "$headers\n$data";
}
/**
* Set Excel file field header
*
* @param array $titles
* @return string
*/
public function titles($titles) {
if (is_array ($titles)) {
$headers = array();
if (is_null ($this->custom_titles)) {
if (is_array ($titles)) {
foreach ($titles as $title) {
$headers [] = iconv ("UTF-8", "GB18030//IGNORE", $title);
}
} else {
foreach ($titles as $title) {
$headers [] = iconv ("UTF-8", "GB18030//IGNORE", $title->name);
}
}
} else {
$keys = array();
foreach ($titles as $title) {
$keys [] = iconv ("UTF-8", "GB18030//IGNORE", $title->name);
}
foreach ($keys as $key) {
$headers [] = iconv ("UTF-8", "GB18030//IGNORE", $this->custom_titles [array_search ($key, $keys)]);
}
}
return implode ("\t", $headers);
}
}
/**
* Set Response Header
*/
private function set_headers() {
$ua = $_SERVER ["HTTP_USER_AGENT"];
$filename = $this->filename . ".xls";
$encoded_filename = urlencode ($filename);
$encoded_filename = str_replace ("+", "%20", $encoded_filename);
header ("Pragma: public");
header ("Expires: 0");
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header ("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header ("Content-Type: application/force-download");
header ("Content-Type: application/octet-stream");
header ("Content-Type: application/download");
if (preg_match ("/MSIE/", $ua)) {
header ('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} else if (preg_match ("/Firefox/", $ua)) {
header ('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
} else {
header ('Content-Disposition: attachment; filename="' . $filename . '"');
}
header ("Content-Transfer-Encoding: binary");
}
}
// Class End Here
Va bene, qui è HTML
e PHP Code
per dimostrare come funziona.
HTML Code:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON to Excel POC</title>
<script type="text/javascript">
<!--
function excelExport() {
// this is your json data as string or you can
// use as object too
var jsonObject = '[{ "Comment" : "Good", "ExperinceMonths" : "4", "ExperinceYears" : "4", "Score" : "3", "Subject" : "CPP", "Topic" : "Scripting (mention details)" }, { "Comment" : "Excilent", "ExperinceMonths" : "6", "ExperinceYears" : "6", "Score" : "6", "Subject" : "CSharp", "Topic" : "WPF" }]';
// create a form
var form = document.createElement('FORM');
form.name = 'exportform';
form.id = 'exportform';
form.method = 'POST';
form.action = './export.php';
// create a hidden input inside form
var hiddenInput = document.createElement('INPUT');
hiddenInput.type = 'HIDDEN';
hiddenInput.name = 'exportdata';
hiddenInput.id = 'exportdata';
hiddenInput.value = jsonObject;
// insert hidden element inside form
form.appendChild(hiddenInput);
// insert form inside body
document.body.appendChild(form);
// submit the form
form.submit();
// remoce the form
document.body.removeChild(form);
return true;
}
//-->
</script>
</head>
<body>
<input type="button" value="Export" onClick='excelExport(); return false;'>
</body>
</html>
e infine Ecco
PHP Code [export.php]
<?php
// add Class Export File
require_once 'Class.Export.php';
// make a new onject of Class Export
$export = new Export();
// Send POSt data to make
// Excel File
if(isset($_POST['exportdata'])){
$export->saveAsExcel();
}
?>
Speranza, questo pezzo di codice aiuterà le persone Perché, condivisione è sempre cura :) Acclamazioni !!
Si potrebbe desiderare di vedere questo [link] (http://architects.dzone.com/articles/convert-javascript-object-csv). – chris97ong
voglio creare un file Excel di quell'oggetto – User1038
Vuoi creare il file Excel con Javascript ??? –