http://zhidao.baidu.com/question/515423304.html?oldq=1 谢谢

解决方案 »

  1.   

    http://www.cnblogs.com/dahuzizyd/archive/2012/07/06/2579738.html重要的还是在代码里循环输出每一行。
    在需要的使用mergeCells 来合并单元格。
      

  2.   

    http://bbs.csdn.net/topics/390237081
    http://bbs.csdn.net/topics/390263234
    你可以参考下 这两个帖子 
    当时,我问的时候也是根据不同的人来进行统计的不知道符不符合你的要求$last=array();   当$row['name']!=$last['name']的时候 就输出感觉 你把我计算 合计的那部分 变成 你要输出的那句话
      

  3.   

    现在我可以弄出来了,但是不知道为什么循环插入excel的时候总是少一条记录
      

  4.   

    这是我的代码    public function createExecel2($chujingcar) {
        
            $this->objPHPExcel = new \PHPExcel();
             
            $objActSheet = $this->objPHPExcel->getActiveSheet()->setTitle('出警明细');
            $this->objPHPExcel->setActiveSheetIndex(0);
            
            
            $this->objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '序号')
            ->setCellValue('B1', '出警人')
            ->setCellValue('C1', '事故科人员')
            ->setCellValue('D1', '时间')
            ->setCellValue('E1', '肇事地点')
            ->setCellValue('F1', '施救车辆')
            ->setCellValue('G1', '备注');
        
            //设置边框
            $objActSheet->getStyle('A1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('B1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('C1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('D1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('E1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('F1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
            $objActSheet->getStyle('G1')->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
        
            $i=0;//用于单元格编号
            $j=1;
            $m=0;
            $count=0;
            //获得出警人姓名
            $this->name = $chujingcar->current()->getDriver_renyuan();
           
            //$this->name='张三';
           //遍历数据库信息
            foreach ($chujingcar as $chujingcar) {
        
                $n=(int)$i+2;
               
                $this->objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A'.$n, $j);
        
                
                if(strcmp($this->name,$chujingcar->getDriver_renyuan())==0){
                    $count++;
                    $this->objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$n, $chujingcar->getDriver_renyuan())
                   
                    //$this->objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('C'.$n, $chujingcar->getDriver_shiguke())
                    ->setCellValue('D'.$n, substr($chujingcar->getDriver_time(), 0,5))
                    ->setCellValue('E'.$n, $chujingcar->getDriver_didian())
                    ->setCellValue('F'.$n, $chujingcar->getDriver_chexing())
                    ->setCellValue('G'.$n, $chujingcar->getDriver_other());
                    
                }else {
                    //$this->objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$n, "111111")->mergeCells('B'.$n.':G'.$n);
                    $this->objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$n, "本组本日出警次数".$count);
                    $count=0;
                    //$n = (int)$n-1;
                   // $n--;
                    //$i = (int)$i+2;
                   
                }
                $this->name = $chujingcar->getDriver_renyuan();
                //$name = '大都';
                //$n++;
                $i++;
                $j++;
                
                //设置边框
                $objActSheet->getStyle('A'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('B'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('C'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('D'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('E'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('F'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                $objActSheet->getStyle('G'.$n)->getBorders()->getOutline()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
                
                
              
                
                //$this->objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$o, "备注:");
                
            
            }
            
            $this->objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.((int)$n+1), "备注:");
      

  5.   

    用mergeCells("A1":"A2");具体代码写法你参考一下应该就可以写出来了。
      

  6.   


    看了下 没有第一行代码  你是做比较之后,是相同的才进行输出  比较不同的时候,无输出  所以就出现了少一行的情况   phpexcel具体 要如何处理不太清楚这是我4楼里贴出的 直接输出在Php页面输出时的方法  仅供参考<?php
    $sql="select * from record where officecode='$officecode' and searchtime like '%$riqi%' order by name limit $offset,$Page_size" ;
    $result=mysql_query($sql,$link);
    $last=array();
    while($row=mysql_fetch_array($result)){
    if($last){
      $row['xingshi'] = (strtotime($row['arrivetime'])-strtotime($last['gotime']))/60;
        if($row['name'] == $last['name']) { //还是同一组
          $distance += $row['distance']; //计算合计距离
          $xingshi += $row['xingshi']; //计算行驶时间
        }
        else { 
         //当组别变化时,行驶时间为0
          $row['xingshi'] = 0;
          ?>
                <td colspan="4"  bgcolor="#E0EEE">合计</td>
          <td><div align="center"> 
            <?php echo $distance."km"; ?> 
    </div></td>
    <td><?php echo $xingshi."min"; ?></td>
          <?php
         //合计完成后,重置行驶距离和行驶时间
          $distance = $row['distance'];
          $xingshi = 0;
        }
    }
    else {
        //每个name第一次进入时的行驶距离和时间
        $distance = $row['distance'];
        $xingshi = 0;
      }
    $last=$row; 
    ?>