X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=JsonToExcel.php;h=75a24fe85c76eae82211dc3bf41aac0697f09bb3;hp=b087d35f57e86fdf69078d5070da91c5e4e7c2ba;hb=1524f8b36295809a3eedd6da3c6494f8aa0d86f5;hpb=c8d4f8a7d5bb74a760023e2e6744b220d6a2bbc2 diff --git a/JsonToExcel.php b/JsonToExcel.php index b087d35f..75a24fe8 100644 --- a/JsonToExcel.php +++ b/JsonToExcel.php @@ -28,88 +28,54 @@ class Pman_Core_JsonToExcel extends Pman return true; } - function get() + function get($v, $opts=array()) { $this->jerr("invalid get"); } function post($fname) { - $ml = (int) ini_get('suhosin.post.max_value_length'); - if (empty($_POST['xml'])) { + $ml = (int) ini_get('suhosin.post.max_value_length'); + if (empty($_POST['_json'])) { header("HTTP/1.0 400 Internal Server Error"); - die( $ml ? "Suhosin Patch enabled - try and disable it!!!" : 'no XML sent'); + die( $ml ? "Suhosin Patch enabled - try and disable it!!!" : 'no JSON sent'); } - if (empty($_POST['xml'])) { + if (empty($_POST['_json'])) { header("HTTP/1.0 400 Internal Server Error"); - die("Missing XML attribute"); + die("Missing json attribute"); } - $xml = $_POST['xml']; + $json = json_decode($_POST['_json']); - $xml = iconv("UTF-8", "UTF-8//IGNORE", $xml); - //$xml = str_replace('é', 'e', $xml); - //$xml = str_replace("\xA0", ' ', $xml); - //$xml = str_replace("Ø", 'dia.',$xml); - - //$this->addEvent("DOWNLOAD", false, isset($_REQUEST['title']) ? $_REQUEST['title'] : '???'); - - - if (!empty($_POST['format']) && $_POST['format']=='gnumeric') { - if (empty($_POST['debug'])) { - header('Content-type: application/x-gnumeric'); - } else { - header('Content-type: text/xml'); - } - echo $xml; - exit; + require_once 'Spreadsheet/Excel/Writer.php'; + // Creating a workbook + $outfile2 = $this->tempName('xls'); + // var_dump($outfile2); + $workbook = new Spreadsheet_Excel_Writer($outfile2); + //$workbook = new Spreadsheet_Excel_Writer(); + $workbook->setVersion(8); + // sending HTTP headers + $worksheet = $workbook->addWorksheet("Sheet 1"); + if (is_a($worksheet, 'PEAR_Error')) { + die($worksheet->toString()); } - $srcTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.gnumeric'; - $targetTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.xls'; - // write the gnumeric file... - $fh = fopen($srcTmp,'w'); - fwrite($fh, $xml); - fclose($fh); + //print_R($worksheet); + $worksheet->setInputEncoding('UTF-8'); - - require_once 'System.php'; - $ss = System::which('ssconvert'); - $cmd = $ss. - " --import-encoding=Gnumeric_XmlIO:sax" . - " --export-type=Gnumeric_Excel:excel_biff8 " . - $srcTmp . ' ' . $targetTmp . ' 2>&1'; - // echo $cmd; - //passthru($cmd);exit; - //exit; - $out = `$cmd`; - clearstatcache(); - - if (!file_exists($targetTmp) || !filesize($targetTmp)) { - header("HTTP/1.0 400 Internal Server Error - Convert error"); - die("ERROR CONVERTING?:" . $cmd ."\n

OUTPUT:". htmlspecialchars($out)); - } - // unlink($srcTmp); - if (empty($fname)) { - $fname = basename($targetTmp); - } - $fname .= preg_match('/\.xls/i', $fname) ? '' : '.xls'; // make sure it ends in xls.. - - header('Content-type: application/vnd.ms-excel'); - header('Content-Disposition: attachment; filename="' .addslashes($fname). '"'); - header('Content-length: '. filesize($targetTmp)); - header("Content-Transfer-Encoding: binary"); - if ($file = fopen($targetTmp, 'rb')) { - while(!feof($file) and (connection_status()==0)) { - print(fread($file, 1024*8)); - flush(); + for ($r = 0; $r < count($json); $r++) { + $row = $json[$r]; + for ($c = 0; $c < count($row); $c++) { + $worksheet->write($r, $c, $row[$c]); } - fclose($file); + } - - unlink($targetTmp); - exit; + $workbook->close(); + require_once 'File/Convert.php'; + $fc= new File_Convert($outfile2, "application/vnd.ms-excel"); + $fn = $fc->convert("application/vnd.ms-excel"); + $fc->serve('attachment','excel-'.date('Y-m-d-H-i-s').'.xls'); // can fix IE Mess + unlink($outfile2); } - - + }