当前位置: 首页 > 编程日记 > 正文

phpexcel导出超过26列解决方案

phpexcel导出超过26列解决方案

原文:phpexcel导出超过26列解决方案

将列的数字序号转成字母使用,代码如下:
 

PHPExcel_Cell::stringFromColumnIndex($i); // 从o,1,2,3,..开始,相应返回返回 A,B,C,...Z,AA,AB,...

 

将列的字母转成数字序号使用,代码如下:

 
PHPExcel_Cell::columnIndexFromString('AA');
使用phpexcel导出excel文件的时候,发现报了一个错误,后来查询问题才发现是列数超过26列的问题。原先的代码:
//$content是一个需要导出的数组
$maxColumn = count($content[0]);
$maxRow    = count($content);
for ($i = 0; $i < $maxColumn; $i++) {
for ($j = 0; $j < $maxRow; $j++) {
$pCoordinate = chr(65+$i) . '' . ($j + 1);
$pValue      = $content[$j][$i];
$objPHPExcel->getActiveSheet()->setCellValue($pCoordinate, $pValue);
}
}
代码中只是将列直接转换为字母,没有考虑到超过26列的情况,超过26列后,chr(65+$i)就变成“[”符号了。
excel行列表示方式
excel的列的表示规则从A,B,C一直到Z,当超过26个字母的时候用两个字母进行表示:AA,AB,AC...AZ,BA,BB,BC...BZ...,当超过702时又是另外一个种表示方法。
行的表示就是1,2,3,4,5,6,7....这样下去。在phpexcel中要设一个单元格的值通过setCellValue方法就可以了,其中第一个参数表示列和行的拼接的值,如:A1,B1,AA1,BA1这样。
改进方法
知道这个之后,只要根据$i/26的整数部分和模部分计算出列的表示字母就可以了。当然phpexcel早就考虑到这个问题了,所以呢不用自己计算,只需要直接调用PHPExcel_Cell类中的stringFromColumnIndex方法就可以了。
/**
*     String from columnindex
*
*     @param    int $pColumnIndex Column index (base 0 !!!)
*     @return    string
*/
public static function stringFromColumnIndex($pColumnIndex = 0) {
//    Using a lookup cache adds a slight memory overhead, but boosts speed
//    caching using a static within the method is faster than a class static,
//        though it's additional memory overhead
static $_indexCache = array();
if (!isset($_indexCache[$pColumnIndex])) {
// Determine column string
if ($pColumnIndex < 26) {
$_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
} elseif ($pColumnIndex < 702) {
$_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) .
chr(65 + $pColumnIndex % 26);
} else {
$_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex – 26) / 676)) .
chr(65 + ((($pColumnIndex – 26) % 676) / 26)) .
chr(65 + $pColumnIndex % 26);
}
}
return $_indexCache[$pColumnIndex];
}
可以看出这个方法针对26列内,26到702列,超过702列都进行了处理,最后就是返回A、B、C、AA、AB这样的字符。对一开始的错误代码改进一下:
//$content是一个需要导出的数组
$maxColumn = count($content[0]);
$maxRow    = count($content);
for ($i = 0; $i < $maxColumn; $i++) {
for ($j = 0; $j < $maxRow; $j++) {
$pCoordinate = PHPExcel_Cell::stringFromColumnIndex($i) . '' . ($j + 1);
$pValue      = $content[$j][$i];
$objPHPExcel->getActiveSheet()->setCellValue($pCoordinate, $pValue);
}
}
from: http://www.01happy.com/phpexcel-column-more-than-26/
posted on 2016-07-28 14:26 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/5714660.html

相关文章:

h5大转盘抽奖源码后台_微信H5互动营销应该要如何做?

现在微信营销的队伍有越来越多的人群&#xff0c;许多的企业品牌都会选择用微信营销&#xff0c;而微信营销这么受欢迎是因为微信拉近了用户与企业品牌的关系。其中H5互动营销是最受欢迎的一种方式&#xff0c;那么微信H5互动营销要如何做呢&#xff1f;企业想要在微信H5营销中…

Solidity语言

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Solidity语言11 Solidity是以太坊智能合约的编程语言&#xff0c;我自己也是学习了很久&#xff0c;感觉是有些难度&#xff0c;所以需要去认真的去…

同一个类 cannot be cast to_留学热门assignment之 税收筹划类essay

税法和税务筹划一直以来都是热门的行业&#xff0c;由于近些年对于税务人才的需求越来越大&#xff0c;税法专业成为了当下最火爆的留学专业之一。发达国家由于税收和法律体系相对完善&#xff0c;法律的条文相较于其他国家而言也更加的细致和有操作性&#xff0c;因此&#xf…

LeetCode 7. Reverse Integer

问题链接 LeetCode 7 题目解析 给定一个32位有符号整数&#xff0c;求其反转数字。 解题思路 如果是简单反转的话&#xff0c;那这道题就太简单了。题目要求判断溢出问题&#xff0c;32位int类型的范围是-2147483648&#xff5e;2147483647。数字反转过后是有可能超出范围的&am…

Ultra-QuickSort POJ 2299(归并排序)

http://acm.hust.edu.cn/vjudge/contest/124435#problem/D 题意&#xff1a;给出一个长度为n的数列&#xff0c;你每一次可以随意交换其中两个数字的位置。问你至少交换几次&#xff0c;才能使得这个数列是个单调递增数列。 比赛时没做出来&#xff0c;&#xff08;自然&#x…

Geth 控制台使用及 Web3.js 使用实战

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 突然发现没有太多写实战的&#xff0c;所以就写一点自己的拙见&#xff0c;提供给成员一些参考。Geth 控制台&#xff08;REPL&#xff09;实现了所…

Java多线程的同步机制(synchronized)

一段synchronized的代码被一个线程执行之前&#xff0c;他要先拿到执行这段代码的权限&#xff0c;在 java里边就是拿到某个同步对象的锁&#xff08;一个对象只有一把锁&#xff09;&#xff1b; 如果这个时候同步对象的锁被其他线程拿走了&#xff0c;他&#xff08;这个线程…

mouseenter 延迟_桃园台服加速器 电狐加速器带你低延迟玩游戏

桃园是由冰动娱乐自主研发的全球首款运用世界顶级开发引擎Unreal Engine 3的次世代回合制网络游戏。Unreal 3引擎在骨骼动画树、特效渲染、游戏性完善等方面表现杰出&#xff0c;而且游戏中还可以呈现广角纵身大场景&#xff0c;1080P的高清画质将会带给玩家前所未有的视觉震撼…

私有链的特点简单介绍

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 私有链是区块链的一种&#xff0c;它指的是某个区块链的写入权限仅掌握在某个人或某个组织手中&#xff0c;数据的访问以及编写等有着十分严格的权限…

typescript调用javascript URI.js

URI.js URI.js是一个用于处理URL的JavaScript库它提供了一个“jQuery风格”的API&#xff08;Fluent接口&#xff0c;方法链接&#xff09;来读写所有常规组件和许多便利方法&#xff0c;如.directory&#xff08;&#xff09;和.authority&#xff08;&#xff09;本文以URI.j…

richeditctrl 选中ole图片 拖拽 空白_高质量的图片素材,碾压度娘几条街......

答应我不要错过​哈喽大家周末好啊&#xff0c;总有小伙伴来问公子说每周的素材分享我到底都是从哪里找的呢&#xff0c;其实公子之前也有告诉过大家&#xff0c;可能是隔的时间太久了。所以今天呢我又给你们整理了一些经常会用到的几个图片网站&#xff0c;都是非常知名而且基…

20160722noip模拟赛alexandrali

【题目大意】 有许多木块, 叠放时, 必须正着叠放, 如图1, 左边两块为合法叠放, 右边为不合法叠放. 图1 一个方块被称为稳定的, 当且仅当其放在最底层, 或其正下方有方块且下方的这个方块的四周都有方块. 叠放必须保证所有方块都稳定. 如图2, 左边3个叠放为合法叠放, 右边2个叠放…

以太坊技术知识讲解

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 以太坊&#xff08;Ethereum&#xff09;是2013年底由一个叫作 Vitalik Buterin 的90后小伙子提出来的技术。以太坊和比特币相似&#xff0c;是一个…

大数据数据倾斜

什么是数据倾斜 简单的讲&#xff0c;数据倾斜就是我们在计算数据的时候&#xff0c;数据的分散度不够&#xff0c;导致大量的数据集中到了一台或者几台机器上计算&#xff0c;这些数据的计算速度远远低于平均计算速度&#xff0c;导致整个计算过程过慢。 相信大部分做…

【leetcode75】Intersection of Two Arrays(数组的交集)

题目描述&#xff1a; 给定两个数组求他们的公共部分&#xff0c;输出形式是数组&#xff0c;相同的元素只是输出一次 例如&#xff1a; nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. 原文描述&#xff1a; Given two arrays, write a function to compute their intersec…

qprocess start怎么判断是否结束_面试结束后,如何判断自己是否有戏?看有无这8大信号!...

关注“职场沉浮宝典”&#xff0c;每天get一个职场小技巧面试结束后&#xff0c;在等待最终结果的过程中&#xff0c;我们常常会惴惴不安&#xff0c;喜欢在脑海里回放全部面试细节&#xff0c;多角度去判断自己通过面试的可能性。毕竟&#xff0c;面试就如同相亲&#xff0c;如…

智能合约语言Solidity 类型介绍

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言&#xff0c;阅读本文前&#xff0c;你应该对以太坊、智能合约有所了解&#…

怎样快速学习React

react简单学习路线&#xff08;实用版&#xff09; 学习一门新的技术之前有必要了解一下该技术在专业领域的评价&#xff0c;使用的领域&#xff0c;以及整体的学习路线&#xff0c;总之尽可能多的在入坑之前了解相关方面的信息。不要什么都不去查就直接学了&#xff0c;这个是…

Poj_1274 The Perfect Stall -二分图裸题

题目&#xff1a;给牛找棚&#xff0c;每个棚只能容一只牛&#xff0c;牛在对应的棚才能产奶&#xff0c;问最多能让几只牛产奶。 /************************************************ Author :DarkTong Created Time :2016/7/31 10:51:05 File Name :Poj_1274.cpp…

青少年软件编程python考试-青岛全国青少年软件编程等级考试—Python

卓优特机器简介 卓优特机器人是集教育机器人设备研发、生产、销售及课程研发、教育机器人课程教育及竞赛技术服务、机器人实验室方案策划及配置、智能技术支持的高新技术集成服务商, 公司由多所知名大学的多位智能技术专家及教授提供技术指导。 卓优特机器人是集教育机器人设备…

区块链基础--工作量证明

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链基础&#xff08;6&#xff09;–工作量证明1 我认为技术和共识构建了区块链&#xff0c;那么就由几个问题需要去解决&#xff0c;第一&…

pat乙级1049

浮点型乘整型和整型乘浮点型结果不同&#xff0c;不知为什么。 1 double sum 0.0; 2 for (int i 0; i < n; i) 3 { 4 cin >> a[i]; 5 sum a[i] * (i 1) * (n - i); 6 } 7 printf("%.2f", sum); 提交结果正确。 1 double sum 0.0; 2 for (int i…

hdu-5778 abs(暴力枚举)

题目链接: abs Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem DescriptionGiven a number x, ask positive integer y≥2, that satisfy the following conditions:1. The absolute value of y - x is minimal2. To prime f…

bugku 杂项 就五层你能解开吗_你能解开这个和数字有关的逻辑解谜游戏吗? | 每日一考...

今天是一道和数字有关的逻辑解谜游戏看看你能用多长时间得到答案这道题的目标是&#xff0c;把网格根据数字划分成很多个方形小块。每个数字都代表它所在的小块面积&#xff0c;也就是包含了几个小格子&#xff0c;要求如下图&#xff0c;每个小块里必须有&#xff0c;而且只能…

区块链技术术语表

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链技术包含了常见的区块链基本概念和进阶阅读的参考文章&#xff0c;用自己的思考方式去优化理解。 比特币&#xff1a;一种分布式网络的数字货…

『TensorFlow』数据读取类_data.Dataset

一、资料 参考原文&#xff1a; TensorFlow全新的数据读取方式&#xff1a;Dataset API入门教程 API接口简介&#xff1a; TensorFlow的数据集 二、背景 注意&#xff0c;在TensorFlow 1.3中&#xff0c;Dataset API是放在contrib包中的&#xff1a; tf.contrib.data 而在Tenso…

出入口控制系统工程设计规范_[问答]连载77-控制系统之间如何时钟同步?

仪表小猪在控制系统中&#xff0c;趋势、报警、事件记录等都与时间相关&#xff0c;因此整个系统始终保持一个统一的时钟很关键。如果操作站和控制站时间不同步&#xff0c;操作员站上面显示的事件、趋势等也不能真正的反应出现场实际变化的时间&#xff0c;不能作为真实的历史…

分布式账本(Distributed ledger)

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易&#xff0c;比如资产或数据的交换。这种共享账本消除了调解不…

手动删除木马程序

1 ??? 2 这个蠢货竟然用360? (360杀毒太流氓&#xff0c;插件不可控&#xff0c;就是第一个要杀的木马) 一些基本的命令往往可以在保护网络安全上起到很大的作用,下面几条命令的作用就非常突出。 一、检测网络连接 如果你怀疑自己的计算机上被别人安装了木马,或者是中…

phpstorm如何同时打开两个文件夹_2分钟学会文件夹共享,化身办公室电脑大神

点击上方蓝色字体&#xff0c;关注我们身在职场或学校的你&#xff0c;还在用微信或QQ给办公室的小伙伴传文件吗&#xff1f;那你可真就out了&#xff0c;总结一下&#xff0c;微信或QQ传文件存在以下3个缺点。1、传输文件大小存在限制微信不能发送100MB以上的文件&#xff0c;…