phpexcel列数太多,【PHPEXECL】关于使用phpExecl导出数据时,列数超过26个报错问题
今天遇到一个关于导出excel表的问题,原因是因为导出的数据列数超过26列,为什么超过26列就会报错呢,因为execl表的抬头标示是从A-Z的,所以超过26位之后,会用[/^等等标识符进行标示.其实这些标识符是有规则的,这些是根据ASCII码进行编排的.
下面我们来看看完善的代码
protected function getExcel($fileName,$headArr,$data,$keys){
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
import("Think.ORG.PHPExcel");import("Think.ORG.PHPExcel.Writer.Excel5");import("Think.ORG.PHPExcel.IOFactory.php");$fileName .= ".xls";//创建PHPExcel对象$objPHPExcel = new PHPExcel();//设置表头$key = ord("A");foreach($headArr as $key1 => $v){//判断是否超过26列if ($key1 <= 25) {$colum = chr($key);}else{if (chr($key) == '[') {$key = ord("A");}$colum = chr(64+$key1/26).chr($key);}$columArr[] = $colum;$objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);++$key;}$column = 2;$objActSheet = $objPHPExcel->getActiveSheet();foreach($data as $key => $rows){ //行写入$span = ord("A");$i=1;foreach($rows as $keyName=>$value){// 列写入$j = $columArr[$keyName]; //判断第i个为时间戳时间if ($keys==$i) {$objActSheet->setCellValue($j.$column,date('Y-m-d',$value));}else{$objActSheet->setCellValue($j.$column,$value);}$span++;$i++;}$column++;}$fileName = iconv("utf-8", "gb2312", $fileName);//设置活动单指数到第一个表,所以Excel打开这是第一个表$objPHPExcel->setActiveSheetIndex(0);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;}
以上代码是我一个项目中的一部分代码,关于列数超过26个报错的.之前我的代码是这样的
直接读取头部信息然后重置excel的表头,所以超过26个的时候没做处理,直接就报错了,下面我处理后的代码是这样的
从上面我们可以看出,当$key1(默认值为0)大于25的时候,新增了一个$key变量,将A字母的ASCII码赋值给$key,每次遍历++$key;这样就可以获取从A-Z的字母了.
关于用$key1/26是为了获取当前轮数,再加上64(A字母的ASCII码是65),再加上chr($key)就可以组合成,AA,AB,AC,AD形式的新抬头标示了.最后附上字符的ASCII表
相关资源:php实现利用phpexcel导入导出数据至excel_phpexcel导出数据-PHP...
原文链接:php导出excel列数太多,【PHPEXECL】关于使用phpExecl导出数据时,列数超过26个报错问题 | Vany..._胡子长过汪涵的博客-CSDN博客
phpexcel列数太多,【PHPEXECL】关于使用phpExecl导出数据时,列数超过26个报错问题相关推荐
- oracle数据导出限定行数,oracle exp 导出数据最大行数是否有限制
匿名用户 1级 2012-10-17 回答 exp 没有行数限制,你可以通过设置参数ROWS试一下. 可以通过输入跟有各种参数的 EXP 命令来控制导出 的运行方式.要指定参数, 您可以使用关键字: ...
- 【Android】自定义View和控件时出现Binary XML file line #报错行数: Binary XML file line #9: Error inflating class 类路径
方法一: 原因:自定义视图.控件的的那个类继承了View或其它布局类的时候没有实现所有的构造方法. 错误写法: 正确写法: 方法二: 原因:参数不匹配 在attrs文件上写的是: <attr n ...
- mysql 1265错误_mysql – 错误1265.尝试从txt文件加载数据时,列的数据被截断
我在 mysql表中有表 表看起来像 create table Pickup ( PickupID int not null, ClientID int not null, PickupDate da ...
- php导出excel列数太多,PhpSpreadsheet导出Excel超过26列解决办法
使用PhpSpreadsheet导出excel文件的时候,发现报了一个错误,后来查询问题才发现是列数超过26列的问题. excel行列表示方式 xexcel的列的表示规则从A,B,C一直到Z,当超过2 ...
- php导出excel列数太多,php生成excel列名,超过26列大于Z问题解决办法
我们生成excel都会使用phpExcel类了,下面我来给大家介绍在生成excel列名超过26列大于Z问题解决办法吧. 这是phpExcel类中的方法.今天查到了,记录一下备忘.<?php pu ...
- phpexcel导出超过26列解决方案
phpexcel导出超过26列解决方案 原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下: PHPExcel_Cell::stringFromColumnInde ...
- 解决QT接受串口数据时数据更新不及时,串口数据太多导致程序界面崩溃,串口接收数据过快等问题
1.问题背景 最近在使用上位机测试传感器接受数据是否正常,发现了很多问题,由于没有系统的学过Qt,用到什么库就学什么库,导致库中的函数很多不清晰,产生了标题中的一系列问题,经过不断的尝试,终于解决上述 ...
- easyExcel导入导出(列锁定单元格、表头合并、导出类型限制、锁定单元格增加底色、设置密码、隐藏列等)
easyexcel官网文档:https://www.yuque.com/easyexcel/doc/easyexcel easyexcel {maven 版本} GitHub网址:https://gi ...
- mysql导出数据到txt太慢_分享:mysql导出数据到txt文件
本节主要内容: mysql导出数据到txt文件 sql语句示例: 复制代码 代码示例: SELECT email FROM xxxxxx where email is not null and ema ...
最新文章
- 【机房真是】。。。各种蛋疼。。。
- 1057 数零壹(PAT乙级 C++实现)
- 23岁研究生校内坠亡!家人称导师经常辱骂讽刺他,事件涉及两所高校!
- cmder 基本配置和使用
- NOIP 2007 普及组初赛试题(C++)(无答案)
- ubuntu16.04安装gradle
- 计算机python是什么意思_系统学习python-1.1什么是计算机
- Java Arrays类进行数组排序需要注意的事情
- ios开发中的字符串常量如何处理
- error40无法打开到sql_技术分享|初识SQL优化之执行计划查看分析
- 在windows上删除linux文件夹,java-如何从Linux删除远程Windows中的文件夹
- VMware16安装Redhat7 图文教程
- 敏捷软件开发与极限编程
- python怎么读取dat文件_小白也能学会系列:用python文件读写代码实例!(简单案例)...
- js-05--对象是什么、创建对象、对象使用、操作对象、遍历对象、内置对象、Math、任意范围随机数、日期对象、字符串对象
- 一个前端报表设计器的设计分析
- linux--磁盘配额
- 做数据建模有哪些工具是值得推荐的?
- 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
- No qualifying bean of type found for dependency: expected at least 1 bean which qualifies as autowir