我想一次删除一列而不删除列的右侧.我已经浏览了第一行,如果它的空白,我只想删除列.但该函数只允许我删除列和旁边的列.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);
}
Run Code Online (Sandbox Code Playgroud)
当您删除列(例如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);
}
Run Code Online (Sandbox Code Playgroud)