phpexcel如何读和写大于26列的excel
主要运用到PHPExcel_Cell类的两个方法
1读取excel大于26列时.
- PHPExcel_Cell::columnIndexFromString($highestColumm)://由列名转化为列索引数字 'A->0,Z->25'
- $highestColumm = $sheet->getHighestColumn(); // 获得最多的列数,返回列名的大写字母 如 'AB','F'等
2>计算出列对应的索引
- $end_index = PHPExcel_Cell::columnIndexFromString($highestColumm);//由列名转为列数('AB'->28)
- $PHPExcel = $reader->load($file_path_root . '/' . $file_name);//文件路径加载文件名
- $sheet = $PHPExcel->getSheet(0);
- $highestRow = $sheet->getHighestRow(); // 取得总行数
- $highestColumm = $sheet->getHighestColumn(); // 取得总列数
- $end_index = PHPExcel_Cell::columnIndexFromString($highestColumm);//由列名转为列数('AB'->28)
- $titles = array();
- $content = array();
- /** 循环读取每个单元格的数据 */
- for ($row = 1; $row <= $highestRow; $row++) {
- for ($column = 0; $column < $end_index; $column++) {
- $col_name = PHPExcel_Cell::stringFromColumnIndex($column);//由列数反转列名(0->'A')
- $value = mb_convert_encoding($sheet->getCell($col_name . $row)->getValue(), 'gbk', 'utf8');//转码
- if ($row == 1) {
- //获取表头
- $titles[] = preg_replace('/\s/', '', $value);
- } else {
- if ($sheet->getCell($col_name . $row)->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC) {
- //数字类型时,三位精度标准来比较该数是否在0,1之间,转换为百分数,保留一位小数
- if (bccomp(floatval($value), floatval('1'), 3) == -1 && bccomp(floatval($value), floatval('0'), 3) == 1) {
- $value = sprintf("%01.1f", $value * 100) . '%';
- }
- }
- $content[$row][$column] = preg_replace('/\s/', '', $value);
- }
- }
- }
ps:
2写大于26列的excel
- $title_col = PHPExcel_Cell::stringFromColumnIndex($k);//标题行列名,由列索引反转列名(0->'A')
- </pre><pre name="code" class="php"><pre name="code" class="php">foreach($titles as $k =>$t)
- {
- $title_col = PHPExcel_Cell::stringFromColumnIndex($k);//标题行列名,由列索引反转列名(0->'A')
- $this->_objPHPExcel->getActiveSheet()->getColumnDimension($title_col)->setWidth(12);
- $this->_objPHPExcel->setActiveSheetIndex()->getStyle($title_col."1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
- $this->_objPHPExcel->getActiveSheet()->setCellValue($title_col."1",iconv('GBK','UTF-8//IGNORE',$t));//标题行
- }
3读取excel百分号时自动转化为了小数
- /* Data types */
- const TYPE_STRING2 = 'str';
- const TYPE_STRING = 's';
- const TYPE_FORMULA = 'f';
- const TYPE_NUMERIC = 'n';
- const TYPE_BOOL = 'b';
- const TYPE_NULL = 'null';
- const TYPE_INLINE = 'inlineStr';
- const TYPE_ERROR = 'e';
- if ($sheet->getCell($col_name . $row)->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC) {
- //数字类型时,三位精度标准来比较该数是否在0,1之间,转换为百分数,保留一位小数
- if (bccomp(floatval($value), floatval('1'), 3) == -1 && bccomp(floatval($value), floatval('0'), 3) == 1) {
- $value = sprintf("%01.1f", $value * 100) . '%';
- }
- }
判断浮点数是否在0-1之间(三位精度),然后组合成百分数即可:
- $value = sprintf("%01.1f", $value * 100) . '%';
phpexcel如何读和写大于26列的excel的更多相关文章
- phpexcel 生成大于26列数据
function excelExport2($fileName = '', $headArr = [], $data = [], $widths=[]) { ob_clean(); // $fileN ...
- PHPExcel导出数据时字段超过26列出错Invalid cell coordinate [1
http://blog.csdn.net/dl425134845/article/details/46650961 以下是解决方案函数 /** * 方法名: getExcel * 作用 ...
- phpexcel导出超过26列解决方案
原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下: PHPExcel_Cell::stringFromColumnIndex($i); // 从o,1,2,3,.. ...
- yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法
作者:白狼 出处:http://www.manks.top/article/yii2_excel_extension 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
- markdown简易快速的编辑格式(易读易写)
实现简单快速书写,格式指定简便.易读易写 讲解http://wowubuntu.com/markdown/ 简单使用的讲解:http://www.ituring.com.cn/article/23 代 ...
- python读、写、修改、追写excel文件
三个工具包 python操作excel的三个工具包如下 xlrd: 对excel进行读相关操作 xlwt: 对excel进行写相关操作 xlutils: 对excel读写操作的整合 注意,只能操作.x ...
- direct path read/write (直接路径读/写)
转载:http://www.dbtan.com/2010/04/direct-path-readwrite.html direct path read/write (直接路径读/写): 直接路径读(d ...
- python3 对excel读、写、修改的操作
一.对excel的写操作实例: 将一个列表的数据写入excel, 第一行是标题,下面行数具体的数据 import xlwt #只能写不能读 stus = [['姓名', '年龄', '性别', '分数 ...
- 网络编程学习笔记--1.socket可读可写条件
转至 :http://blog.csdn.net/majianfei1023/article/details/45788591 socket可读可写条件,经常做为面试题被问,因为它考察被面试者对网络编 ...
随机推荐
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_1_函数式编程思想概述
函数式编程和面向对象的区别
- win10+jdk+mysql+tomcat+jpress环境搭建与部署
本机搭建jpress用于接口测试的学习 目录 1.环境与工具准备 2.mysql服务端安装 3.tomcat配置 4.jpress部署 1.环境与工具准备 a.服务器为本机为win10 64位 b.j ...
- NFS实现文件共享
NFS(Network Files System)即网络文件系统,NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,NFS客户端可以像使用本地资源一样读写远端NFS服务端的资料,需要 ...
- 实列+JVM讲解类的实列化顺序
刨根问底---类的实列化顺序 开篇三问 1什么是类的加载,类的加载和类的实列有什么关系,什么时候类加载 2类加载会调用构造函数吗,什么时候调用构造函数 3什么是实列化对象,实列化的对象有什么东西. 我 ...
- [Python3 练习] 007 简单的猜数字小游戏
题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...
- mysql自动补全功能(只能用于表/列 名)
关键字:mysql自动补全,auto-rehash 注:只能补齐表,列名,使用tab进行补全操作 一.修改my.cnf vi /etc/my.cnf [mysql] auto-rehash #添加au ...
- nested exception is java.lang.NoClassDefFoundError: org/hibernate/validator/resourceloading/ResourceBundleLocator
原来的hibernate-validator-5.3.0.Final.jar里没有这个接口,换成 hibernate-validator-4.1.0.Final.jar 就好了
- SQL Server增量备份数据[转]
服务器中一个数据库DB,其中表A有几个地方要写入的,程序设定在网络不通的时候也可以用本机的数据库运行,在网络通达后,再将本机的数据写回到服务器中,经研究,增量备份有以下几种可能性: 1. ...
- Flutter 初探 -
flutter 安装 经过许久的关注,及最近google算是真正地推行flutter时,加上掘金小册也有相应的教程,我知道自己得跟着这一波潮流学习了,不然迟早会面临着小程序的危(大家都会了就你不会), ...
- [ASP.NET Core 3框架揭秘] 依赖注入:IoC模式
原文:[ASP.NET Core 3框架揭秘] 依赖注入:IoC模式 正如我们在<依赖注入:控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式”,实际上IoC不仅与面向对象没 ...