对于一个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)
实际使用代码:
就是这么简答粗暴哦,寥寥几笔,希望能够帮到你~~~~