今天接到个需求是对excel里的礼包数据导入到数据库

使用composer包

composer require phpoffice/phpspreadsheet:^1.18

由于对应的奖品众多,奖品数量不固定,对列的数量也不固定,想通过代码实现一劳永逸的办法。

该插件提供的获取最大的列的方法

$col = $sheet->getHighestColumn(); //返回列名 “AA”

到这里就无法遍历所有列了

因为ord('AA') = 65, 只取了第一个字母。

为解决这个问题,需要按照excel的格式将类似AAB, CZ等列转成数字进行遍历,获取单元格时再转成列名。实现方法如下:

列名和列数字相互转换


// 通过列名推导列排在第几个数字
function colToNum($col)
{$initAsciiNum = 64; // 第一个字母A的ASCII值$letterNum = 26; // 字母个数$num = 0;$len = strlen($col);for ($i = 0; $i < $len; $i++) {$c = $col[$len - $i - 1];$num += pow($letterNum, $i) * (ord($c) - $initAsciiNum);}return $num;
}// 通过数字反推列名
function numToCol($num)
{$n = $num;$str = '';$letterNum = 26; // excel一共使用26个字母来组合$initAsciiNum = 64; // 第一个字母A的ASCII值while (true) {if ($n > 0) {$y = $n % $letterNum; // 计算余数if (!$y) {$n--;$y = $letterNum;}$str = chr($y + $initAsciiNum) . $str;$n = intval($n / $letterNum);if ($n === 1 && $y === 0) {break;}} else {break;}}return $str;
}

对以上的代码进行测试

wps的excel中最大的列名是XFD,转换成数字是16384。说明excel的表格最大支持16384个列,足以满足大多数业务使用。

使用php读取大量列的excel数据相关推荐

  1. 使用jxl导入excel文件 读取带有有效性的excel数据,遇到的问题

    一.使用jxl读取excel数据时,由于添加了数据有效性验证,在Wookbook.getSheet(0)的时候出现空指针异常: Warning: Cell at A6 not present - ad ...

  2. 批量读取和写出excel数据#R语言#

    运用R语言处理数据时总会遇到大批量excel数据读取和写入的问题,以R中的iris数据集举例,主要有以下几种形式(直接上代码): 读入数据: 1.将多个excel数据批量读入R环境中(读入csv格式文 ...

  3. python读取xlsx python读取excel数据

    如题 python pandas读取excel数据 如何读取特定sheet的excel数据 1.安装pandas 已经有的可以不用再安装 >pip install pandas 2.读取数据 首 ...

  4. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  5. 如何利用API实现行式报表后台导入excel数据入库

     润乾报表提供了excel导入页面后入库的功能,丰富了用户导入excel的方式.对于普通填报表,润乾报表提供了直接后台入库和导入页面入库的方式,那么在行式填报表中,如何实现后台导入excel入库呢 ...

  6. java 动态导入excel_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  7. 行式填报表导入excel数据直接入库

     由于行式填报在导入excel的数据量比较大的时候,页面加载数据会很慢,在这种情况下可以采取后台直接导入数据库的方法,实例如下: package example; import java.sql. ...

  8. python读取excel某一列内容-Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  9. matlab输入excel高版本,『matlab读取excel指定列』excel中大量数据如何导入matlab当中?超过1000个数据无法一个一个输入...

    如何将excel表格中大量数据导入matlab中并作图 哈哈,选我吧!使用xlsread函数体的语法你在帮助里面搜索xlsread就可以了.我要是现在回答也接翻译帮助文件.xlsread的参数有文件表 ...

最新文章

  1. linux fedora 35 彻底卸载idea2021.2.2
  2. python调用数据库数据类型_Python使用Mysql官方驱动(取出dict类型的数据)
  3. scrapy爬取多页面
  4. java 图片有损压缩_java - 用有损jpeg压缩多页tiff图像 - 堆栈内存溢出
  5. Python+OpenCV:尺度不变特征变换 (SIFT, Scale-Invariant Feature Transform)
  6. arduino 有源 蜂鸣器_Arduino控制蜂鸣器发声
  7. Intellij Idea插件开发点滴记录
  8. linux cpu 时间,【Linux】CPU时间与处理器耗时
  9. 7-45 水果忍者 (30 point(s))
  10. 线程三连鞭之“线程基础”
  11. 【PTA】代码部分基础整理
  12. MySQL面试题大全(陆续更新)
  13. cf手游3月22日最全更新内容:恐怖博物馆、凤凰武器、血月模式上线
  14. 深度linux系统联想e42-80安装,联想E42-80笔记本win10改win7系统
  15. 蓝桥杯题解-高僧斗法
  16. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?
  17. html自动获取当前日期格式,js日期格式化format
  18. 5.14上午数据库学习笔记
  19. 投资性房地产注意事项
  20. 服务器压力测试 wrk,wrk性能测试(详解)

热门文章

  1. 使用 Eslint + husky + lint-staged + Prettier 提高前端项目质量、统一项目代码风格
  2. 软件测试工程师笔试面试题带答案(一)
  3. MIR4 预制凭证修改及过账,尾差调整
  4. Python程序设计基础第七章笔记:字符串
  5. 51单片机74ls273并行输出地址c语言程序,跑马灯/输入输出接口(片选地址74LS273)...
  6. 苹果Mac电脑清理垃圾软件卸载工具CleanMyMac X
  7. 【好诗选读】新春诗会作品合集|黄晓平 蒋德明 徐书遐|刘红立 孟萌 刘东宏
  8. Java—文件传输助手单机版,你值得拥有
  9. 【JavaEE】HTML
  10. bWAPP解题笔记——A7-Missing Functional Level Access Control