我使用下面的插件来阅读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)
我尝试添加一个新案例来处理空条目但没有成功。
对上述问题的任何帮助都会很棒。
答案 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)
如何处理内容后的所有空值? 您可以遍历数组并填充所有缺失的行。