Получение пустых значений столбца, включенных в окончательный выходной массив из SpreadsheetExcelReader - PullRequest
0 голосов
/ 18 января 2012

Я использую плагин ниже для чтения файла Microsoft Excel (расширение .xls)

http://php -spreadsheetreader.googlecode.com / СВН-история / r26 / Excel / OLERead.php

Согласно текущей реализации плагина, он возвращает read Excel в виде массива.

Приведенный ниже код считывает выделение и возвращает его в виде массива

<code>        include_once('spreadsheet_excel_reader.php');
        $data = new Spreadsheet_Excel_Reader_New();
        $data->setOutputEncoding('CP1251');
        $data->read('full path of file');
        echo '<pre>';print_r($data->sheets[0]['cells']);echo '
'; выход;

Ячейки массива содержат количество значений, равное количеству строк в листе Excel.

Каждое само значение является массивом, состоящим из количества ключей, равного количеству столбцов на листе.

Ячейки массива выглядят так, как показано ниже -

    [cells] => Array( 
                              [1] => Array
                                    (
                                        [1] => a
                                        [2] => b
                                        [3] => c
                                        [4] => d
                                        [5] => e
                                        [6] => f
                                        [7] => g
                                    )

                                [2] => Array
                                    (
                                        [1] => fddfg
                                        [2] => dfgd
                                        [5] => ghjgh 
                                        [6] => dgdf
                                        [7] => uyijkgh
                                    )

                                [3] => Array
                                    (
                                        [1] => fghfg
                                        [2] => gvsfdgdf
                                        [4] => fdg4t4  
                                        [5] => gfdg
                                        [6] => dfgd
                                        [7] => ghfghf
                                    )

                                [4] => Array
                                    (
                                        [1] => fgh
                                        [2] => sfsdf
                                        [5] => fghfgh
                                        [6] => fsdf
                                        [7] => dfgdfg
                                    ) 
)

Как видно из приведенного выше массива, ключ 1 содержит массив заголовков листа. Таким образом, всего в таблице Excel есть 7 столбцов. В настоящее время, если какая-либо ячейка не содержит значения в листе, она пропускает эти значения в массиве. но мое требование заключается в том, что если в ячейке нет значений, в этом случае массив должен содержать пустые значения.

В плагине весь процесс создания массива происходит в функции ниже

function _parsesheet ($ spos)

Я пытаюсь добавить новый случай для обработки пустых записей, но безуспешно.

Любая помощь по вышеуказанному вопросу будет отличной.

Ответы [ 2 ]

2 голосов
/ 18 января 2012
$max = 0;
array_walk($data->sheets[0]['cells'],function($row) use (&$max) { $max = max(max(array_keys($row)),$max); });
array_walk($data->sheets[0]['cells'],function(&$row) use ($max) { $row = $row + array_fill_keys(range(1,$max),NULL); ksort($row); });

var_dump($data->sheets[0]['cells']);

Дополняет каждый пропущенный столбец ячейкой NULL Ничего не делает с отсутствующими строками. PHP> = 5.3.0

0 голосов
/ 18 января 2012

Как он должен обрабатывать все нулевые значения после вашего контента?Вы можете перебрать массив и заполнить все пропущенные строки.

...