DataObjects/core.sql
[Pman.Core] / SimpleExcel.php
index c260deb..02c29bf 100644 (file)
@@ -34,7 +34,7 @@
         workbooks = array(
             workbook ->
             
-            
+        'leave_open' => false  
             
  */
  
 class Pman_Core_SimpleExcel extends Pman
 {
     
-    var $workSheetCfg = array();
+    var $worksheet_cfg = array();
     var $start_row = 0;
+    var $formats = array();
+    var $workbook = false;
+    var $worksheet= false;
     
     function Pman_Core_SimpleExcel($data,$cfg)
     {
@@ -81,8 +84,8 @@ class Pman_Core_SimpleExcel extends Pman
             
         }
         
-        if (empty($cfg['leave_open'])) {
-            
+        if (!empty($cfg['leave_open'])) {
+            $this->workbook = $workbook;
             $this->outfile2 = $outfile2;
             return;
         }
@@ -106,9 +109,9 @@ class Pman_Core_SimpleExcel extends Pman
         //echo '<PRE>';        print_R($cfg);
       //  print_r($cfg);exit;
         // Creating a worksheet
-        
+        //print_R($cfg);exit;
         // copy the config and alias so that book can be written to..
-        $this->worksheetCfg[$cfg['workbook']] = &$cfg;
+        $this->worksheet_cfg[$cfg['workbook']] = &$cfg;
         
         $worksheet =  $workbook->addWorksheet($cfg['workbook']);
         if (is_a($worksheet, 'PEAR_Error')) {
@@ -117,7 +120,7 @@ class Pman_Core_SimpleExcel extends Pman
         //print_R($worksheet);
         $worksheet->setInputEncoding('UTF-8'); 
          
-         
+        $this->worksheet = $worksheet;
          
         $start_row = 0;
         
@@ -139,9 +142,7 @@ class Pman_Core_SimpleExcel extends Pman
             $start_row++;
         }
             
-            
-            
-         
+               
         foreach($cfg['cols'] as $c=>$col_cfg) {
             if (is_string($col_cfg)) {
                 $cfg['cols'][$c] = array(
@@ -167,48 +168,10 @@ class Pman_Core_SimpleExcel extends Pman
         $hasRender  = false;
            //     DB_DataObject::debugLevel(1);
         foreach($data as $r=>$clo) {
-            $cl = $clo;
-            if (is_object($clo)) {
-                $cl = (array)$clo; // lossless converstion..
-            }
             
-            if (isset($cfg['row_height'])) {
-                $worksheet->setRow($start_row +$r, $cfg['row_height']);
-            }
-            
-            foreach($cfg['cols']  as $c=>$col_cfg) {
-                
-                if(isset($cl[$col_cfg['dataIndex']])){
-                    $v = $cl[$col_cfg['dataIndex']];
-                }else{
-                    if(isset($col_cfg['fillBlank'])){
-                        $worksheet->write($start_row+$r, $c, '', $formats[$col_cfg['fillBlank']]);
-                    }
-                    continue;
-                }
-                
-                if (empty($cl[$col_cfg['dataIndex']])) {
-                    continue;
-                }
-                if (isset($col_cfg['txtrenderer'])) {
-                    $v = call_user_func($col_cfg['txtrenderer'], 
-                            $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $clo);
-                    if ($v === false) {
-                        continue;
-                    }
-                  //  var_dump($v);
-                }
-                if (isset($col_cfg['renderer'])) {
-                    $hasRender = true;
-                    continue;
-                }
-                
-                $v = @iconv('UTF-8', 'UTF-8//IGNORE', $v);
-                
-                $format = isset($col_cfg['format']) ? $formats[$col_cfg['format']] : false;
-                
-                $worksheet->write($start_row+$r, $c, $v, $format);
-            }
+            $hasRenderRow = $this->addLine($cfg['workbook'], $clo);
+            $hasRender = ($hasRender  || $hasRenderRow) ? true : false;
+             
         }
         /// call user render on any that are defined..
         if ($hasRender) {
@@ -220,6 +183,7 @@ class Pman_Core_SimpleExcel extends Pman
                         continue;
                     }
                     if (isset($col_cfg['renderer'])) {
+                        // not sure if row is correct here...!!!?
                         call_user_func($col_cfg['renderer'], $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $cl);
                         
                     }
@@ -248,6 +212,7 @@ class Pman_Core_SimpleExcel extends Pman
             $start_row++;
         }
             
+        $this->formats = $formats;
         
         
         
@@ -256,9 +221,14 @@ class Pman_Core_SimpleExcel extends Pman
     
     function addLine($worksheet_name, $clo)
     {
-        $cfg = $this->workSheetCfg[$worksheet_name];
-        $start_row = $this->start_row;
+        $cfg        = $this->worksheet_cfg[$worksheet_name];
+        $start_row  = $this->start_row;
+        $formats    = $this->formats;
+        $worksheet  = $this->worksheet;
+        
+        
         
+        $hasRender   = false;
         $r = 0;
        
         $cl = $clo;
@@ -299,20 +269,24 @@ class Pman_Core_SimpleExcel extends Pman
             
             $v = @iconv('UTF-8', 'UTF-8//IGNORE', $v);
             
-            $format = isset($col_cfg['format']) ? $formats[$col_cfg['format']] : false;
             
+            $format = isset($col_cfg['format'])  && isset($formats[$col_cfg['format']] )   ? $formats[$col_cfg['format']] : false;
+          //  print_R(array($start_row+$r, $c, $v, $format));exit;
             $worksheet->write($start_row+$r, $c, $v, $format);
         }
         $this->start_row++;
         
-        
+        return $hasRender;
     }
-    
-    
-    
+     
     
     function send($fn)
     {
+        if (!empty($this->workbook)) {
+            $this->workbook->close();
+            $this->workbook = false;
+        }
+        
         require_once 'File/Convert.php';
         $fc=  new File_Convert($this->outfile2, "application/vnd.ms-excel");
         $fn = $fc->convert("application/vnd.ms-excel");