我正在使用PHPExcel库来读取Excel文件中的数据.我遇到的问题是,当我使用类似的东西:
$obj = PHPExcel_IOFactory::load($file);
$data = $obj->getActiveSheet()->toArray(null,true,true,true);
Run Code Online (Sandbox Code Playgroud)
要加载我的文件并将其内容转换为数组,我将获取我的Excel文件的所有列和行,即使是那些没有任何数据的列.PHPExcel库中是否有方法或其他东西告诉它忽略Excel表格中不包含任何数据的单元格?(而不是我的一堆空关联数组$data)
TiG*_*iGR 15
如果您的问题在于获取追踪真实数据的空列,并且您希望避免这些,则可以执行以下操作:
$maxCell = $sheet->getHighestRowAndColumn();
$data = $sheet->rangeToArray('A1:' . $maxCell['column'] . $maxCell['row']);
Run Code Online (Sandbox Code Playgroud)
这将返回仅表示包含实际数据的区域的数组.
I have this solution for my case
$maxCell = $objWorksheet->getHighestRowAndColumn();
$data = $objWorksheet->rangeToArray('A1:' . $maxCell['column'] . $maxCell['row']);
Run Code Online (Sandbox Code Playgroud)
return all rows with all empty string as:
[1] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
)
Run Code Online (Sandbox Code Playgroud)
To remove these empty rows
$data = array_map('array_filter', $data);
Run Code Online (Sandbox Code Playgroud)
will return
[1] => Array ( )
And this is the finale solution:
$maxCell = $objWorksheet->getHighestRowAndColumn();
$data = $objWorksheet->rangeToArray('A1:' . $maxCell['column'] . $maxCell['row']);
$data = array_map('array_filter', $data);
$data = array_filter($data);
Run Code Online (Sandbox Code Playgroud)
will return an array with only filled rows .. hope that help
不,没有。toArray() 方法返回第一个参数 (NULL) 来表示空单元格。然后,您可以应用标准 PHP 数组函数(例如 array_filter())来消除空单元格。
foreach($data as $key => &$row) {
$row = array_filter($row,
function($cell) {
return !is_null($cell);
}
);
if (count($row) == 0) {
unset($data[$key]);
}
}
unset ($row);
Run Code Online (Sandbox Code Playgroud)
这将消除每个 NULL(空)值的单元格,以及只包含空单元格的每一行。它将保留数组键,因此您的数组键仍将为您提供单元格引用。
请注意,包含空字符串的单元格不是空单元格,因此它们将被保留,尽管也可以修改 array_filter() 回调以删除它们。