looking for wrong seperator
[Pman.Core] / JsonToExcel.php
index 3a6a523..75a24fe 100644 (file)
@@ -28,7 +28,7 @@ class Pman_Core_JsonToExcel extends Pman
         return true;
     }
 
-    function get()
+    function get($v, $opts=array())
     {
         $this->jerr("invalid get");
     }
@@ -44,72 +44,38 @@ class Pman_Core_JsonToExcel extends Pman
             header("HTTP/1.0 400 Internal Server Error");
             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<BR><BR> 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); 
     }
-    
-    
+     
 }