phpexcel导出文件格式求解 http://zhidao.baidu.com/question/515423304.html?oldq=1 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/dahuzizyd/archive/2012/07/06/2579738.html重要的还是在代码里循环输出每一行。在需要的使用mergeCells 来合并单元格。 http://bbs.csdn.net/topics/390237081http://bbs.csdn.net/topics/390263234你可以参考下 这两个帖子 当时,我问的时候也是根据不同的人来进行统计的不知道符不符合你的要求$last=array(); 当$row['name']!=$last['name']的时候 就输出感觉 你把我计算 合计的那部分 变成 你要输出的那句话 现在我可以弄出来了,但是不知道为什么循环插入excel的时候总是少一条记录 这是我的代码 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), "备注:"); 用mergeCells("A1":"A2");具体代码写法你参考一下应该就可以写出来了。 看了下 没有第一行代码 你是做比较之后,是相同的才进行输出 比较不同的时候,无输出 所以就出现了少一行的情况 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; ?> 诚聘PHP开发人员。速度就一个名额。 现在哪一种开源框架最好? 用snoopy抓取EMS验证码,远程模拟查询单号,取得查询结果 discuz 发帖预览功能 ,谁有相关插件 或修改代码 提供一些感谢 我走淘宝助理上面导出店铺商品,用PHP读取全部是乱码,怎么回事,如何解决? 谁能给个仿QQ相册图片上传代码 php微信接口 mysql 合并 自己搞了一个星期了,也没成功,求救给出解密后源码! 求解决在php中使用curl上传文件时返回http code100的情况 PHP生成静态页面简单小实例源码程序 PHP与ICE的配置问题
在需要的使用mergeCells 来合并单元格。
http://bbs.csdn.net/topics/390263234
你可以参考下 这两个帖子
当时,我问的时候也是根据不同的人来进行统计的不知道符不符合你的要求$last=array(); 当$row['name']!=$last['name']的时候 就输出感觉 你把我计算 合计的那部分 变成 你要输出的那句话
$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), "备注:");
看了下 没有第一行代码 你是做比较之后,是相同的才进行输出 比较不同的时候,无输出 所以就出现了少一行的情况 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;
?>