今天遇到一个关于导出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个报错问题相关推荐

  1. oracle数据导出限定行数,oracle exp 导出数据最大行数是否有限制

    匿名用户 1级 2012-10-17 回答 exp 没有行数限制,你可以通过设置参数ROWS试一下. 可以通过输入跟有各种参数的 EXP 命令来控制导出 的运行方式.要指定参数, 您可以使用关键字: ...

  2. 【Android】自定义View和控件时出现Binary XML file line #报错行数: Binary XML file line #9: Error inflating class 类路径

    方法一: 原因:自定义视图.控件的的那个类继承了View或其它布局类的时候没有实现所有的构造方法. 错误写法: 正确写法: 方法二: 原因:参数不匹配 在attrs文件上写的是: <attr n ...

  3. mysql 1265错误_mysql – 错误1265.尝试从txt文件加载数据时,列的数据被截断

    我在 mysql表中有表 表看起来像 create table Pickup ( PickupID int not null, ClientID int not null, PickupDate da ...

  4. php导出excel列数太多,PhpSpreadsheet导出Excel超过26列解决办法

    使用PhpSpreadsheet导出excel文件的时候,发现报了一个错误,后来查询问题才发现是列数超过26列的问题. excel行列表示方式 xexcel的列的表示规则从A,B,C一直到Z,当超过2 ...

  5. php导出excel列数太多,php生成excel列名,超过26列大于Z问题解决办法

    我们生成excel都会使用phpExcel类了,下面我来给大家介绍在生成excel列名超过26列大于Z问题解决办法吧. 这是phpExcel类中的方法.今天查到了,记录一下备忘.<?php pu ...

  6. phpexcel导出超过26列解决方案

    phpexcel导出超过26列解决方案 原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下:   PHPExcel_Cell::stringFromColumnInde ...

  7. 解决QT接受串口数据时数据更新不及时,串口数据太多导致程序界面崩溃,串口接收数据过快等问题

    1.问题背景 最近在使用上位机测试传感器接受数据是否正常,发现了很多问题,由于没有系统的学过Qt,用到什么库就学什么库,导致库中的函数很多不清晰,产生了标题中的一系列问题,经过不断的尝试,终于解决上述 ...

  8. easyExcel导入导出(列锁定单元格、表头合并、导出类型限制、锁定单元格增加底色、设置密码、隐藏列等)

    easyexcel官网文档:https://www.yuque.com/easyexcel/doc/easyexcel easyexcel {maven 版本} GitHub网址:https://gi ...

  9. mysql导出数据到txt太慢_分享:mysql导出数据到txt文件

    本节主要内容: mysql导出数据到txt文件 sql语句示例: 复制代码 代码示例: SELECT email FROM xxxxxx where email is not null and ema ...

最新文章

  1. 【机房真是】。。。各种蛋疼。。。
  2. 1057 数零壹(PAT乙级 C++实现)
  3. 23岁研究生校内坠亡!家人称导师经常辱骂讽刺他,事件涉及两所高校!
  4. cmder 基本配置和使用
  5. NOIP 2007 普及组初赛试题(C++)(无答案)
  6. ubuntu16.04安装gradle
  7. 计算机python是什么意思_系统学习python-1.1什么是计算机
  8. Java Arrays类进行数组排序需要注意的事情
  9. ios开发中的字符串常量如何处理
  10. error40无法打开到sql_技术分享|初识SQL优化之执行计划查看分析
  11. 在windows上删除linux文件夹,java-如何从Linux删除远程Windows中的文件夹
  12. VMware16安装Redhat7 图文教程
  13. 敏捷软件开发与极限编程
  14. python怎么读取dat文件_小白也能学会系列:用python文件读写代码实例!(简单案例)...
  15. js-05--对象是什么、创建对象、对象使用、操作对象、遍历对象、内置对象、Math、任意范围随机数、日期对象、字符串对象
  16. 一个前端报表设计器的设计分析
  17. linux--磁盘配额
  18. 做数据建模有哪些工具是值得推荐的?
  19. 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
  20. No qualifying bean of type found for dependency: expected at least 1 bean which qualifies as autowir

热门文章

  1. 做好网络舆情监测监控的重要性,TOOM网络舆情监控平台建设方案?
  2. 【小分队】Android上隐藏应用程序
  3. MATLAB 图像特征点检测(6个方法)
  4. 实现el-table树形表格所有行的展开与收起
  5. oracle 更新update语句
  6. Spark3 Standalone模式分布式集群搭建
  7. vue登录页实现记住密码的操作
  8. 碧蓝航线-传颂之物脚本(部分)
  9. HTML <td> 标签
  10. 使用layui的table样式出现td标签的padding属性消不掉