ExcelToJson.php
authorEdward <edward@roojs.com>
Fri, 22 Mar 2013 05:22:38 +0000 (13:22 +0800)
committerEdward <edward@roojs.com>
Fri, 22 Mar 2013 05:22:38 +0000 (13:22 +0800)
ExcelToJson.php

index cad6033..88fa435 100644 (file)
@@ -30,8 +30,62 @@ class Pman_Core_ExcelToJson extends Pman_Roo
         require_once 'File/Convert.php';
         $fc = new File_Convert($img->getStoreName(), $img->mimetype );
         $csv = $fc->convert('text/csv');
-        $data = $this->importCsv($csv);
+        $data = $this->importCsv($this->walkrows($csv));
         $this->jdata($data);
         
     }
+    
+    function walkrows($csv)
+    {
+        ini_set("auto_detect_line_endings", true);
+        
+        $fh = fopen($csv, 'r');
+        if (!$fh) {
+            $this->jerr("invalid file");
+        }
+        
+         
+        $cols = false;
+        $header = false;
+        $rows = array();
+        $ret = array();
+        
+        while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
+            if(!array_filter($n)){
+                if ($header) {
+                    continue;
+                }
+                $header = true;
+                continue;
+            }
+            
+            if(!$header){
+               $ret[preg_replace(array('/\s/', '/\:/'), '', $n[0])] = $n[1];
+               continue;
+            }
+            
+            if(!$cols){
+                $cols = array();
+                foreach($n as $k) {
+                    $cols[] = strtoupper(trim($k));
+                }
+                
+                if (empty($cols)) {
+                    continue;
+                }
+               
+           
+                continue;
+            }
+            
+            foreach($cols as $i=>$k) {
+                $row[$k] = $n[$i];
+            }
+            $rows[] = $row;
+            
+        }
+        fclose($fh);
+        
+        return array('ret' => $ret, 'rows' => $rows);;
+    }
 }
\ No newline at end of file