GnumericToExcel.php
[Pman.Core] / GnumericToExcel.php
index 9927c45..824db5b 100644 (file)
@@ -55,7 +55,7 @@ class Pman_Core_GnumericToExcel extends Pman
         //$this->addEvent("DOWNLOAD", false, isset($_REQUEST['title']) ? $_REQUEST['title'] : '???');
         
         
-        if (1) { // if (!empty($_POST['format']) && $_POST['format']=='gnumeric') {
+        if (!empty($_POST['format']) && $_POST['format']=='gnumeric') {
             if (empty($_POST['debug'])) {
                 header('Content-type: application/x-gnumeric');
                 header('Content-Disposition: attachment; filename="' .addslashes($fname). '.gnumeric"');
@@ -65,8 +65,20 @@ class Pman_Core_GnumericToExcel extends Pman
             echo $xml; 
             exit;
         }
+        
+        $ext = '.xls';
+        $outfmt = 'Gnumeric_Excel:excel_biff8';
+        $mime = 'application/vnd.ms-excel';
+        if (!empty($_POST['format']) && $_POST['format']=='xlsx') {
+            $outfmt = 'Gnumeric_Excel:xlsx';
+            $ext = '.xlsx';
+            $mime = 'aapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+        }
+        
+        
+        
         $srcTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.gnumeric';
-        $targetTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.xls';
+        $targetTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_') . $ext;
         // write the gnumeric file...
         $fh = fopen($srcTmp,'w');
         fwrite($fh, $xml);
@@ -74,10 +86,12 @@ class Pman_Core_GnumericToExcel extends Pman
         
         
         require_once 'System.php';
+        $xvfb = System::which('xvfb-run');
+        
         $ss = System::which('ssconvert');
-        $cmd =  $ss. 
+        $cmd = $xvfb . " -a " . $ss. 
                 " --import-encoding=Gnumeric_XmlIO:sax" .
-                " --export-type=Gnumeric_Excel:excel_biff8 " . 
+                " --export-type={$outfmt} " . 
                 $srcTmp . ' ' . $targetTmp . ' 2>&1';
         // echo $cmd;
         //passthru($cmd);exit;
@@ -95,7 +109,7 @@ class Pman_Core_GnumericToExcel extends Pman
         }
         $fname .= preg_match('/\.xls/i', $fname) ? '' :  '.xls'; // make sure it ends in xls..
        
-        header('Content-type: application/vnd.ms-excel');
+        header('Content-type: ' . $mime);
         header('Content-Disposition: attachment; filename="' .addslashes($fname). '"');
         header('Content-length: '. filesize($targetTmp));   
         header("Content-Transfer-Encoding: binary");