fix #8131 - chinese translations
[Pman.Core] / SimpleExcel.php
index bea9c93..0ca12fc 100644 (file)
@@ -47,7 +47,7 @@ new Pman_Core_SimpleExcel($data_array, array(
             workbook => '....' // ???
     ),
     'leave_open' => false,  // if you call addrows?? later..
-            
+    'nonspacer' => false, // should add line between head and header row.     
 ));
 
     callbacks: renderer
@@ -74,9 +74,10 @@ class Pman_Core_SimpleExcel extends Pman
     var $formats = array();
     var $workbook = false;
     var $worksheet= false;
-    
+    var $postRender = array();
+    var $outfile2;
      
-    function Pman_Core_SimpleExcel($data,$cfg)
+    function __construct($data,$cfg)
     {
       // print_r($cfg);exit;
         require_once 'Spreadsheet/Excel/Writer.php';
@@ -243,6 +244,7 @@ class Pman_Core_SimpleExcel extends Pman
         if (empty($data)) {
             return;
         }
+         
         foreach($cfg['cols']  as $c => $col_cfg) {
             if (isset($col_cfg['renderer'])) {
                 $hasRender = true;
@@ -279,8 +281,7 @@ class Pman_Core_SimpleExcel extends Pman
                             continue;
                         }
                         if (!empty($col_cfg['renderer'])) {
-                            
-                            if (is_a($col_cfg['renderer'], 'Closure')) {
+                             if (is_a($col_cfg['renderer'], 'Closure')) {
                                 $col_cfg['renderer']($cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $cl);
                             } else {
                             // not sure if row is correct here...!!!?
@@ -370,6 +371,18 @@ class Pman_Core_SimpleExcel extends Pman
             }
             if (isset($col_cfg['renderer'])) {
                 $hasRender = true;
+                
+                $v = isset($cl[$col_cfg['dataIndex']]) ? $cl[$col_cfg['dataIndex']] : '';
+                if (empty($cl[$col_cfg['dataIndex']])) {
+                    continue;
+                }
+                $this->postRender[] = array(
+                    $col_cfg['renderer'], $cl[$col_cfg['dataIndex']], $worksheet, $start_row+$r+1, $c, $cl
+                );
+                  
+                
+                
+                
                 continue;
             }
             
@@ -382,7 +395,7 @@ class Pman_Core_SimpleExcel extends Pman
           //  print_R(array($start_row+$r, $c, $v, $format));exit;
           // handle 0 prefixes..
           
-            if (preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $v)) {
+            if ($dataFormat == 'date' || preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $v)) {
                 $dataFormat = 'date';
                 $format = empty($format) ? $this->formats['_default_date_format_']: $format;
                 $ut_to_ed_diff = 86400 * 25569;
@@ -397,9 +410,10 @@ class Pman_Core_SimpleExcel extends Pman
             if ( (is_numeric($v) &&  strlen($v) > 1 && substr($v,0,1) == '0' && substr($v,1,1) != '.' )
                     || 
                     $dataFormat == 'string' ) {
+                //var_dump("Write ( {$r}, {$c} ) = " . $v);
                 $worksheet->writeString($start_row+$r, $c, $v, $format);
             } else {
-          
+                //var_dump("Write String ( {$r}, {$c} ) = " . $v);
                 $worksheet->write($start_row+$r, $c, $v, $format);
             }
             
@@ -417,6 +431,20 @@ class Pman_Core_SimpleExcel extends Pman
     
     function send($fname)
     {
+        
+        if (!empty($this->postRender)) {
+            foreach($this->postRender as $ar) {
+                 if (is_a($ar[0], 'Closure')) {
+                    $ar[0]($ar[1], $ar[2], $ar[3], $ar[4], $ar[5]);
+                } else {
+                // not sure if row is correct here...!!!?
+                    call_user_func($ar[0],$ar[1], $ar[2], $ar[3], $ar[4], $ar[5]);
+                }
+            }
+            
+        }
+        
+        
         if (!empty($this->workbook)) {
             $this->workbook->close();
             $this->workbook = false;