首页 / PHP / PHPExcel导到excel报错
PHPExcel导到excel报错
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHPExcel导到excel报错,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4376字,纯文字阅读大概需要7分钟。
内容图文
![PHPExcel导到excel报错](/upload/InfoBanner/zyjiaocheng/204/2ba61cfe1ba84e849140c372c33200dc.jpg)
报错页面:
public function outxls() { $model = D($this->dbname); $map = $this->_search(); if (method_exists($this, '_filter')) { $this->_filter($map); } $list = $model->where($map)->field('id,status,yewujindu,fenlei,uid,juid,juname,uuid,uuname,xcrq,xingming,phone,type,introduce,introphone,daikuanpro,addtime,uname,addm,updatetime,sex,birth,marry,shenhu,shebaonianshu,shebaojishu,baoxianjiaoe')->select(); $headArr=array('ID','进展','公司名称','下次联系','联系人','添加人','添加时间','更新时间'); $filename='客户管理'; $this->xlsout($filename,$headArr,$list); }
怀疑是导出字段太多了,导出26个字段都可以的,再加一个27个就报错了,是不是在哪可以改导出字段限制的?
回复讨论(解决方案)
Invalid cell coordinate 无效的单元格坐标
把你的 xlsout 方法贴出了看看!
关键是列号生成的部分
Invalid cell coordinate 无效的单元格坐标
把你的 xlsout 方法贴出了看看!
关键是列号生成的部分
public function xlsout($filename='数据表',$headArr,$list){ //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入 import("Org.Util.PHPExcel"); import("Org.Util.PHPExcel.Writer.Excel5"); import("Org.Util.PHPExcel.IOFactory.php"); $this->getExcel($filename,$headArr,$list); }public function getExcel($fileName,$headArr,$data){ //对数据进行检验 if(empty($data) || !is_array($data)){ die("data must be a array"); } //检查文件名 if(empty($fileName)){ exit; } $date = date("Y_m_d",time()); $fileName .= "_{$date}.xls"; //创建PHPExcel对象,注意,不能少了\ $objPHPExcel = new \PHPExcel(); $objProps = $objPHPExcel->getProperties(); //设置表头 $key = ord("A"); foreach($headArr as $v){ $colum = chr($key); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1', $v); $key += 1; } $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); //设置为文本格式 foreach($data as $key => $rows){ //行写入 $span = ord("A"); foreach($rows as $keyName=>$value){// 列写入 $j = chr($span); $objActSheet->setCellValueExplicit($j.$column, $value); $span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); //重命名表 // $objPHPExcel->getActiveSheet()->setTitle('test'); //设置活动单指数到第一个表,所以Excel打开这是第一个表 $objPHPExcel->setActiveSheetIndex(0); ob_end_clean();//清除缓冲区,避免乱码 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=\"$fileName\""); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); //文件通过浏览器下载 exit; }
$span = ord("A"); foreach($rows as $keyName=>$value){// 列写入 $j = chr($span); $objActSheet->setCellValueExplicit($j.$column, $value); $span++; }
这就不对了!
当 $span = ord('Z')+1 的时候 chr(($span) 得到的是 [
显然是错误的,正确的应是 AA
所以需要一个这样的函数进行计算
function CellName($n) { $r = ''; do { $m = $n % 26; $n = intval($n / 26); $r = chr(65 + $m - ($r ? 1 : 0)) . $r; }while($n > 0); return $r;}
好在 php 还保留了 C 语言的一些特性,可以很简单的做这个计算
$c = 'A';for($i=0; $i<100; $i++) printf("%s %s\n", $i, $c++);
利用这个特性,你的程序可写作
$span = "A"; foreach($rows as $keyName=>$value){// 列写入 $j = $span; $objActSheet->setCellValueExplicit($j.$column, $value); $span++; }
$span = ord("A"); foreach($rows as $keyName=>$value){// 列写入 $j = chr($span); $objActSheet->setCellValueExplicit($j.$column, $value); $span++; }
这就不对了!
当 $span = ord('Z')+1 的时候 chr(($span) 得到的是 [
显然是错误的,正确的应是 AA
所以需要一个这样的函数进行计算
function CellName($n) { $r = ''; do { $m = $n % 26; $n = intval($n / 26); $r = chr(65 + $m - ($r ? 1 : 0)) . $r; }while($n > 0); return $r;}
好在 php 还保留了 C 语言的一些特性,可以很简单的做这个计算
$c = 'A';for($i=0; $i<100; $i++) printf("%s %s\n", $i, $c++);
利用这个特性,你的程序可写作
$span = "A"; foreach($rows as $keyName=>$value){// 列写入 $j = $span; $objActSheet->setCellValueExplicit($j.$column, $value); $span++; }
多谢指点!
内容总结
以上是互联网集市为您收集整理的PHPExcel导到excel报错全部内容,希望文章能够帮你解决PHPExcel导到excel报错所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。