PhpSpreadsheet 读取excel大于26列出错

对于一个php后端程序员来说,excel导入到数据库这个功能,就没有几个小伙伴没遇到过吧?

excel导入,首先,就是循环读取每行的每个单元格的值,然后格式化数据存入数据库中。

关键代码如下


咦~~~~,有的小伙伴看了老半天也没啥问题,对,是的,这段代码是没啥问题

也是能够正常导入读取的。

但是当我们要导入的excel表格数据大于26行时,这段代码就会有问题了,你会发现你只能导入第一列,其他的列都为空。。。。。

咦,真是奇了怪了。

然后只能一段一段代码的打断点来查原因。

你会发现原来excel列名是A,B,C..........AA,AB,AC这样设计的,当列名达到Z时,Z加一是多少?

是],这是因为php在计算字符串加法时,会把‘Z’换算成ASCII值也就是90,90+1=91也就是对应‘]’字符

而excel表里没有这个列名的,所以就读取不出来。。

那我们怎么去处理这个问题呢

只要做一层字符和数字的映射就好了

比如A=1,B=2,C=3..........Z=26,AA=27,AB=28

这是我想的一种十分老土的方法,如果实在没其他的招,你们将就着用哈。不过像你们这么聪明应该也不会使用,对吧,哈哈哈哈哈~

别慌,编写PhpSpreadsheet扩展的大佬早已经帮我们设计好了,直接拿来用就好了。那怎么用呢

来,直接上代码:

$highestColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn)

实际使用代码:


就是这么简答粗暴哦,寥寥几笔,希望能够帮到你~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容