我想一次删除一列而不删除列的右侧。我已经浏览了第一行,如果它的空白,我只想删除列。但该函数只允许我删除列和旁边的列。 y scenerio列(M有值)(N没有值)(O没有值)(P有值)(Q有值)
$toremove_arr=array();
for ($ga='A'; $ga !== $highestCol; $ga++){
$col=$objPHPExcel->getActiveSheet()->getCell($ga.'1')->getValue();
if ($col=='') {
$toremove_arr[]=$ga;
}
}
$toremove_num = count($toremove_arr);
for($i=0; $i < $toremove_num; $i++){
$objPHPExcel->getActiveSheet()->removeColumn($toremove_arr[$i], 1);
}
答案 0 :(得分:6)
当您删除列(例如A列)时,PHPExcel不会简单地清空A列中的所有单元格,而是将所有其他列混洗以填补空白...因此B列成为新列A,列C成为新列B等。这模拟了MS Excel的行为。
如果要删除的列数组包含A和B:首先删除列A.前一列B现在成为A列,前一列C成为B列,前一列D成为新列C.然后删除列B ...但实际上是您之前在列中的数据C ...不是您计划删除的列...您真的打算从列A列中删除数据。
要解决此问题,您需要按相反的顺序删除列;所以你先删除B列,然后删除A列。
array_reverse($toremove_arr);
$toremove_num = count($toremove_arr);
for($i=0; $i < $toremove_num; $i++){
$objPHPExcel->getActiveSheet()->removeColumn($toremove_arr[$i], 1);
}