X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=GnumericToExcel.php;fp=GnumericToExcel.php;h=527e103409ae8ee6cba9dfbea45032d911fcac25;hp=cae40372bb5c48e2a25c625e80288fe3aa3c2e80;hb=acd86626b8db386ca9fc3b1dbd1a4b819afeaf5b;hpb=8cd2a9237c684aa16bc21e3ac6d3793c49c65400
diff --git a/GnumericToExcel.php b/GnumericToExcel.php
index cae40372..527e1034 100644
--- a/GnumericToExcel.php
+++ b/GnumericToExcel.php
@@ -55,7 +55,7 @@ class Pman_Core_GnumericToExcel extends Pman
//$this->addEvent("DOWNLOAD", false, isset($_REQUEST['title']) ? $_REQUEST['title'] : '???');
- 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,21 @@ class Pman_Core_GnumericToExcel extends Pman
echo $xml;
exit;
}
- $srcTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.gnumeric';
- $targetTmp = ini_get('session.save_path') . '/' .uniqid('gnumeric_').'.xls';
+
+ $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 = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+ }
+ */
+
+
+
+ $srcTmp = $this->tempName('gnumeric');
+ $targetTmp = $this->tempName($ext);
// write the gnumeric file...
$fh = fopen($srcTmp,'w');
fwrite($fh, $xml);
@@ -79,7 +92,7 @@ class Pman_Core_GnumericToExcel extends Pman
$ss = System::which('ssconvert');
$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;
@@ -91,13 +104,27 @@ class Pman_Core_GnumericToExcel extends Pman
header("HTTP/1.0 400 Internal Server Error - Convert error");
die("ERROR CONVERTING?:" . $cmd ."\n
OUTPUT:". htmlspecialchars($out));
}
+ if (!empty($_POST['format']) && $_POST['format']=='xlsx') {
+ require_once 'File/Convert.php';
+ $cc = new File_Convert($targetTmp,'application/vnd.ms-excel');
+
+ $targetTmp = $cc->convert('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+ $mime = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+ $ext = ".xlsx";
+ }
+
+
+
+
+
+
// unlink($srcTmp);
if (empty($fname)) {
$fname = basename($targetTmp);
}
- $fname .= preg_match('/\.xls/i', $fname) ? '' : '.xls'; // make sure it ends in xls..
+ $fname .= preg_match('/\.' . $ext . '/i', $fname) ? '' : ('.' . $ext); // 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");