Commit 42a252c2982dafc049790bbf01b03244153d5095
1 parent
d1fac7a9
fixed issue with header in xlsx parser
Showing
10 changed files
with
9 additions
and
96 deletions
Show diff stats
lib/CsvParser.php
@@ -3,8 +3,6 @@ | @@ -3,8 +3,6 @@ | ||
3 | 3 | ||
4 | */ | 4 | */ |
5 | namespace yii\multiparser; | 5 | namespace yii\multiparser; |
6 | -use common\components\CustomVarDamp; | ||
7 | - | ||
8 | 6 | ||
9 | /** | 7 | /** |
10 | * Class CsvParser | 8 | * Class CsvParser |
@@ -72,8 +70,4 @@ class CsvParser extends TableParser | @@ -72,8 +70,4 @@ class CsvParser extends TableParser | ||
72 | protected function isEmptyColumn( $val ){ | 70 | protected function isEmptyColumn( $val ){ |
73 | return $val == ''; | 71 | return $val == ''; |
74 | } | 72 | } |
75 | - | ||
76 | - protected function setResult( ){ | ||
77 | - $this->result[] = $this->row; | ||
78 | - } | ||
79 | } | 73 | } |
80 | \ No newline at end of file | 74 | \ No newline at end of file |
lib/ObjectCreator.php
@@ -9,8 +9,6 @@ | @@ -9,8 +9,6 @@ | ||
9 | namespace yii\multiparser; | 9 | namespace yii\multiparser; |
10 | 10 | ||
11 | 11 | ||
12 | -use common\components\CustomVarDamp; | ||
13 | - | ||
14 | class ObjectCreator { | 12 | class ObjectCreator { |
15 | public static function build( array $configuration ){ | 13 | public static function build( array $configuration ){ |
16 | if ( isset( $configuration['class'] ) ) { | 14 | if ( isset( $configuration['class'] ) ) { |
lib/Parser.php
@@ -12,8 +12,6 @@ namespace yii\multiparser; | @@ -12,8 +12,6 @@ namespace yii\multiparser; | ||
12 | //@todo - xml - убрать из названий функций xml и array - это и так понятно | 12 | //@todo - xml - убрать из названий функций xml и array - это и так понятно |
13 | 13 | ||
14 | 14 | ||
15 | -use common\components\CustomVarDamp; | ||
16 | - | ||
17 | abstract class Parser | 15 | abstract class Parser |
18 | { | 16 | { |
19 | public $converter_conf = []; | 17 | public $converter_conf = []; |
lib/ParserHandler.php
lib/TableParser.php
lib/XlsxParser.php
@@ -9,7 +9,6 @@ | @@ -9,7 +9,6 @@ | ||
9 | namespace yii\multiparser; | 9 | namespace yii\multiparser; |
10 | 10 | ||
11 | 11 | ||
12 | -use common\components\CustomVarDamp; | ||
13 | 12 | ||
14 | 13 | ||
15 | /** | 14 | /** |
@@ -49,53 +48,34 @@ class XlsxParser extends TableParser { | @@ -49,53 +48,34 @@ class XlsxParser extends TableParser { | ||
49 | 48 | ||
50 | public function read() | 49 | public function read() |
51 | { | 50 | { |
52 | - $this->extractFiles(); | ||
53 | 51 | ||
52 | + $this->extractFiles(); | ||
54 | $this->readSheets(); | 53 | $this->readSheets(); |
55 | $this->readStrings(); | 54 | $this->readStrings(); |
56 | 55 | ||
57 | foreach ( $this->sheets_arr as $sheet ) { | 56 | foreach ( $this->sheets_arr as $sheet ) { |
58 | //проходим по всем файлам из директории /xl/worksheets/ | 57 | //проходим по всем файлам из директории /xl/worksheets/ |
59 | - $this->current_sheet = $sheet; | 58 | + |
60 | $sheet_path = $this->path_for_extract_files . '/xl/worksheets/' . $sheet . '.xml'; | 59 | $sheet_path = $this->path_for_extract_files . '/xl/worksheets/' . $sheet . '.xml'; |
61 | if ( file_exists( $sheet_path ) && is_readable( $sheet_path ) ) { | 60 | if ( file_exists( $sheet_path ) && is_readable( $sheet_path ) ) { |
62 | 61 | ||
63 | $xml = simplexml_load_file( $sheet_path, "SimpleXMLIterator" ); | 62 | $xml = simplexml_load_file( $sheet_path, "SimpleXMLIterator" ); |
64 | $this->current_node = $xml->sheetData->row; | 63 | $this->current_node = $xml->sheetData->row; |
65 | $this->current_node->rewind(); | 64 | $this->current_node->rewind(); |
66 | - if ( $this->current_node->valid() ) { | ||
67 | 65 | ||
68 | - parent::read(); | ||
69 | - | ||
70 | - } | 66 | + parent::read(); |
71 | 67 | ||
72 | } | 68 | } |
73 | 69 | ||
74 | } | 70 | } |
75 | - | ||
76 | - | ||
77 | - if ( $this->active_sheet ) { | ||
78 | - | ||
79 | - // в настройках указан конкретный лист с которогшо будем производить чтение, поэтому и возвращаем подмассив | ||
80 | - return $this->result[ $this->current_sheet ]; | ||
81 | - }else{ | ||
82 | - return $this->result; | ||
83 | - } | ||
84 | - | 71 | + return $this->$result; |
85 | } | 72 | } |
86 | 73 | ||
87 | protected function extractFiles () | 74 | protected function extractFiles () |
88 | { | 75 | { |
89 | - $this->path_for_extract_files = $this->path_for_extract_files . session_id(); | ||
90 | - if ( !mkdir($this->path_for_extract_files) ) | ||
91 | - { | ||
92 | - throw new \Exception( 'Ошибка создания временного каталога - ' . $this->path_for_extract_files ); | ||
93 | - } | ||
94 | - | ||
95 | - | ||
96 | $zip = new \ZipArchive; | 76 | $zip = new \ZipArchive; |
97 | if ( $zip->open( $this->file->getPathname() ) === TRUE ) { | 77 | if ( $zip->open( $this->file->getPathname() ) === TRUE ) { |
98 | - $zip->extractTo( $this->path_for_extract_files . '/' ); | 78 | + $zip->extractTo( $this->path_for_extract_files ); |
99 | $zip->close(); | 79 | $zip->close(); |
100 | } else { | 80 | } else { |
101 | throw new \Exception( 'Ошибка чтения xlsx файла' ); | 81 | throw new \Exception( 'Ошибка чтения xlsx файла' ); |
@@ -105,7 +85,7 @@ class XlsxParser extends TableParser { | @@ -105,7 +85,7 @@ class XlsxParser extends TableParser { | ||
105 | protected function readSheets () | 85 | protected function readSheets () |
106 | { | 86 | { |
107 | if ( $this->active_sheet ) { | 87 | if ( $this->active_sheet ) { |
108 | - $this->sheets_arr[ ] = 'Sheet' . $this->active_sheet; | 88 | + $this->sheets_arr[ $this->active_sheet ] = 'Sheet' . $this->active_sheet; |
109 | return; | 89 | return; |
110 | } | 90 | } |
111 | 91 | ||
@@ -138,18 +118,11 @@ class XlsxParser extends TableParser { | @@ -138,18 +118,11 @@ class XlsxParser extends TableParser { | ||
138 | } | 118 | } |
139 | 119 | ||
140 | 120 | ||
141 | - | ||
142 | - // protected function readRow ( $item, $sheet , $current_row ) | ||
143 | protected function readRow ( ) | 121 | protected function readRow ( ) |
144 | { | 122 | { |
145 | - $this->row = []; | ||
146 | $node = $this->current_node->getChildren(); | 123 | $node = $this->current_node->getChildren(); |
147 | - if ($node === NULL) { | ||
148 | - return; | ||
149 | - } | ||
150 | - //foreach ( $node as $child ) { | ||
151 | - for ( $node->rewind(); $node->valid(); $node->next() ) { | ||
152 | - $child = $node->current(); | 124 | + |
125 | + foreach ( $node as $child ) { | ||
153 | $attr = $child->attributes(); | 126 | $attr = $child->attributes(); |
154 | 127 | ||
155 | if( isset($child->v) ) { | 128 | if( isset($child->v) ) { |
@@ -166,20 +139,12 @@ class XlsxParser extends TableParser { | @@ -166,20 +139,12 @@ class XlsxParser extends TableParser { | ||
166 | } | 139 | } |
167 | 140 | ||
168 | } | 141 | } |
169 | - // дополним ряд пустыми значениями если у нас ключей больше чем значений | ||
170 | - if ( $this->has_header_row && ( count( $this->keys ) > count( $this->row ) ) ) { | ||
171 | - $extra_coloumn = count( $this->keys ) - count( $this->row ); | ||
172 | - for ( $i = 1; $i <= $extra_coloumn; $i++ ) { | ||
173 | - $this->row[] = ''; | ||
174 | - } | ||
175 | - } | ||
176 | $this->current_node->next(); | 142 | $this->current_node->next(); |
177 | } | 143 | } |
178 | 144 | ||
179 | protected function isEmptyRow(){ | 145 | protected function isEmptyRow(){ |
180 | 146 | ||
181 | $is_empty = false; | 147 | $is_empty = false; |
182 | - // CustomVarDamp::dump(count( $this->row ), $this->current_row_number); | ||
183 | 148 | ||
184 | if ( !count( $this->row ) || !$this->current_node->valid() ) { | 149 | if ( !count( $this->row ) || !$this->current_node->valid() ) { |
185 | return true; | 150 | return true; |
@@ -188,7 +153,7 @@ class XlsxParser extends TableParser { | @@ -188,7 +153,7 @@ class XlsxParser extends TableParser { | ||
188 | $j = 0; | 153 | $j = 0; |
189 | for ($i = 1; $i <= count( $this->row ); $i++) { | 154 | for ($i = 1; $i <= count( $this->row ); $i++) { |
190 | 155 | ||
191 | - if ( $this->isEmptyColumn( $this->row[$i - 1] ) ) { | 156 | + if ( isset($this->row[$i - 1]) && $this->isEmptyColumn( $this->row[$i - 1] ) ) { |
192 | $j++; | 157 | $j++; |
193 | } | 158 | } |
194 | 159 | ||
@@ -204,37 +169,4 @@ class XlsxParser extends TableParser { | @@ -204,37 +169,4 @@ class XlsxParser extends TableParser { | ||
204 | protected function isEmptyColumn( $val ){ | 169 | protected function isEmptyColumn( $val ){ |
205 | return $val == ''; | 170 | return $val == ''; |
206 | } | 171 | } |
207 | - | ||
208 | - protected function setResult( ){ | ||
209 | - $this->result[ $this->current_sheet ][] = $this->row; | ||
210 | - } | ||
211 | - | ||
212 | - protected function deleteExtractFiles () | ||
213 | - { | ||
214 | - $this->removeDir( $this->path_for_extract_files ); | ||
215 | - | ||
216 | - } | ||
217 | - | ||
218 | - protected function removeDir($dir) { | ||
219 | - if (is_dir($dir)) { | ||
220 | - $objects = scandir($dir); | ||
221 | - foreach ($objects as $object) { | ||
222 | - if ($object != "." && $object != "..") { | ||
223 | - if (filetype($dir."/".$object) == "dir") | ||
224 | - $this->removeDir($dir."/".$object); | ||
225 | - else | ||
226 | - unlink($dir."/".$object); | ||
227 | - } | ||
228 | - } | ||
229 | - reset($objects); | ||
230 | - rmdir($dir); | ||
231 | - } | ||
232 | - } | ||
233 | - | ||
234 | - function __destruct() | ||
235 | - { | ||
236 | - $this->deleteExtractFiles(); | ||
237 | - } | ||
238 | - | ||
239 | - | ||
240 | } | 172 | } |
241 | \ No newline at end of file | 173 | \ No newline at end of file |
lib/XmlParser.php
@@ -9,9 +9,6 @@ | @@ -9,9 +9,6 @@ | ||
9 | namespace yii\multiparser; | 9 | namespace yii\multiparser; |
10 | 10 | ||
11 | 11 | ||
12 | -use common\components\CustomVarDamp; | ||
13 | -use common\components\CustomArrayHelper; | ||
14 | - | ||
15 | class XmlParser extends Parser{ | 12 | class XmlParser extends Parser{ |
16 | 13 | ||
17 | public $node; | 14 | public $node; |
lib/YiiConverter.php
lib/YiiMultiparser.php
lib/YiiParserHandler.php