代码之家  ›  专栏  ›  技术社区  ›  Azima

removeRow()未按预期在phpExcel中删除行

  •  1
  • Azima  · 技术社区  · 7 年前

    我尝试删除空行[实际上是不符合条件的行]。 这就是我尝试的:

    if(null !== ($this->f3->get('SESSION.userStatus')))
    {
        $userStatus =  $this->f3->get('SESSION.userStatus');
    }
    
    $rowID = 5;
    foreach ($results as $result) 
       {
         if($result['status'] == $userStatus)
         {
            $objPHPExcel->getActiveSheet()->setCellValue('A'.$rowID, $result['fullname']);
            $objPHPExcel->getActiveSheet()->setCellValue('B'.$rowID, $result['checkin_date']);
         }
       else
         {
            $objPHPExcel->getActiveSheet()->removeRow($rowID);
         }
         $rowID++;
       }
    

    但我还是得到了空行:

           A   |  B   |  C  |  D
      1        |      |     |
      .
      .
      174      |      |     |
      175      |      |     |
      176      |      |     |
      177      |      |     |
      178 John |  2014| xyz | dfdf
      179 Jack |  2015| jkl | dfdf
      180      |      |     |
      .
      .
    

    我该如何摆脱那些空行?行号其实并不重要,我需要做的就是去掉那些空行。请帮我做这个。。。谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mark    7 年前

    你仍然在增加rowID,这就是为什么你有空行

    if(null !== ($this->f3->get('SESSION.userStatus')))
    {
        $userStatus =  $this->f3->get('SESSION.userStatus');
    }
    
    $rowID = 5;
    foreach ($results as $result) 
       {
         if($result['status'] == $userStatus)
         {
            $objPHPExcel->getActiveSheet()->setCellValue('A'.$rowID, $result['fullname']);
            $objPHPExcel->getActiveSheet()->setCellValue('B'.$rowID, $result['checkin_date']);
         }
       else
         {
            $objPHPExcel->getActiveSheet()->removeRow($rowID);
            continue;
         }
         $rowID++;
       }