PHPExcel-删除整行
PHPExcel- remove whole row
我需要一个上传 excel 文件的解决方案,在 A 列需要检查的邮件地址列表中。
现在我必须用整行删除 A 列中的所有 Gmail 地址。
我编写了一些代码,但它并没有删除该行中的所有 Gmail 地址,我认为该脚本会每隔一行删除包含 Gmail 的行。
有人可以检查并帮助我吗?
这是我的代码:
// setup columns and rows for loop
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
//define $results from rows as array
$result = [];
//loop column A and get values from each row in Array $results
for($row = 1; $row <= $highestRow; ++$row) {
$result[] = $sheet->getCell('A' .$row)->getValue();
}
//remove gmail adresses in rows
foreach($result as $gmail){
if(preg_match('/gmail.com/', $gmail)) {
$objPHPExcel->getActiveSheet()->removeRow($row);
}
}
开始于:
//define $results from rows as array
$result = [];
//loop column A and get values from each row in Array $results
for($row = 1; $row <= $highestRow; ++$row) {
$result[] = $sheet->getCell('A' .$row)->getValue();
}
可以替换为
$result = $sheet->rangeToArray('A1:A'.$highestRow);
这将 return 一个二维数组或行和列,每行从 0 开始索引;您可以将其提供给 array column()
以获得简单的一维数组。
$result = array_column($sheet->rangeToArray('A1:A'.$highestRow), 0);
然后需要对数组进行反转,保留key,这样从下往上遍历:
$result = array_reverse($result, true);
遍历数组时,需要检索键和值,因为这样可以识别行号:
foreach($result as $reference => $gmail){
if(preg_match('/gmail.com/', $gmail)) {
$row = $reference + 1; // adjust the array key to the row number
$objPHPExcel->getActiveSheet()->removeRow($row);
}
}
我需要一个上传 excel 文件的解决方案,在 A 列需要检查的邮件地址列表中。 现在我必须用整行删除 A 列中的所有 Gmail 地址。
我编写了一些代码,但它并没有删除该行中的所有 Gmail 地址,我认为该脚本会每隔一行删除包含 Gmail 的行。
有人可以检查并帮助我吗?
这是我的代码:
// setup columns and rows for loop
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
//define $results from rows as array
$result = [];
//loop column A and get values from each row in Array $results
for($row = 1; $row <= $highestRow; ++$row) {
$result[] = $sheet->getCell('A' .$row)->getValue();
}
//remove gmail adresses in rows
foreach($result as $gmail){
if(preg_match('/gmail.com/', $gmail)) {
$objPHPExcel->getActiveSheet()->removeRow($row);
}
}
开始于:
//define $results from rows as array
$result = [];
//loop column A and get values from each row in Array $results
for($row = 1; $row <= $highestRow; ++$row) {
$result[] = $sheet->getCell('A' .$row)->getValue();
}
可以替换为
$result = $sheet->rangeToArray('A1:A'.$highestRow);
这将 return 一个二维数组或行和列,每行从 0 开始索引;您可以将其提供给 array column()
以获得简单的一维数组。
$result = array_column($sheet->rangeToArray('A1:A'.$highestRow), 0);
然后需要对数组进行反转,保留key,这样从下往上遍历:
$result = array_reverse($result, true);
遍历数组时,需要检索键和值,因为这样可以识别行号:
foreach($result as $reference => $gmail){
if(preg_match('/gmail.com/', $gmail)) {
$row = $reference + 1; // adjust the array key to the row number
$objPHPExcel->getActiveSheet()->removeRow($row);
}
}