From 9ef9856b794bc6c67252813ad4abb80fcf5f1b87 Mon Sep 17 00:00:00 2001 From: Edward Date: Fri, 22 Mar 2013 13:22:38 +0800 Subject: [PATCH] ExcelToJson.php --- ExcelToJson.php | 56 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/ExcelToJson.php b/ExcelToJson.php index cad6033f..88fa435f 100644 --- a/ExcelToJson.php +++ b/ExcelToJson.php @@ -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 -- 2.39.2