从SpreadsheetExcelReader获取最终输出数组中包含的空白列值

时间:2012-01-18 07:57:23

标签: php excel xls

我使用下面的插件来阅读micrsoft excel文件(.xls扩展名)

http://php-spreadsheetreader.googlecode.com/svn-history/r26/Excel/OLERead.php

根据当前的插件实现,它将read excel作为数组返回。

以下代码读取excel并将其作为数组返回

        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 '</pre>';exit;

数组单元格包含的数量等于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 个答案:

答案 0 :(得分:2)

$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&gt; = 5.3.0

答案 1 :(得分:0)

如何处理内容后的所有空值? 您可以遍历数组并填充所有缺失的行。