X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JsonToExcel.php;h=75a24fe85c76eae82211dc3bf41aac0697f09bb3;hb=65f6a222491b69d6d18b3d8b9b94f68c5fd9d770;hp=8539973ed72ca677b0dda755c31c0c27fc0c157e;hpb=d671590339bf5c99fb199292e633a68860f8851c;p=Pman.Core
diff --git a/JsonToExcel.php b/JsonToExcel.php
index 8539973e..75a24fe8 100644
--- a/JsonToExcel.php
+++ b/JsonToExcel.php
@@ -28,7 +28,7 @@ class Pman_Core_JsonToExcel extends Pman
return true;
}
- function get()
+ function get($v, $opts=array())
{
$this->jerr("invalid get");
}
@@ -37,79 +37,45 @@ class Pman_Core_JsonToExcel extends Pman
$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'];
-
- $xml = iconv("UTF-8", "UTF-8//IGNORE", $xml);
-
- //$xml = str_replace('é', 'e', $xml);
- //$xml = str_replace("\xA0", ' ', $xml);
- //$xml = str_replace("Ã", 'dia.',$xml);
+ $json = json_decode($_POST['_json']);
- //$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);
}
-
-
+
}