對于一個php后端程序員來說,excel導(dǎo)入到數(shù)據(jù)庫這個功能,就沒有幾個小伙伴沒遇到過吧?
excel導(dǎo)入,首先,就是循環(huán)讀取每行的每個單元格的值,然后格式化數(shù)據(jù)存入數(shù)據(jù)庫中。
關(guān)鍵代碼如下

咦~~~~,有的小伙伴看了老半天也沒啥問題,對,是的,這段代碼是沒啥問題
也是能夠正常導(dǎo)入讀取的。
但是當(dāng)我們要導(dǎo)入的excel表格數(shù)據(jù)大于26行時,這段代碼就會有問題了,你會發(fā)現(xiàn)你只能導(dǎo)入第一列,其他的列都為空。。。。。
咦,真是奇了怪了。
然后只能一段一段代碼的打斷點來查原因。
你會發(fā)現(xiàn)原來excel列名是A,B,C..........AA,AB,AC這樣設(shè)計的,當(dāng)列名達(dá)到Z時,Z加一是多少?
是],這是因為php在計算字符串加法時,會把‘Z’換算成ASCII值也就是90,90+1=91也就是對應(yīng)‘]’字符
而excel表里沒有這個列名的,所以就讀取不出來。。
那我們怎么去處理這個問題呢
只要做一層字符和數(shù)字的映射就好了
比如A=1,B=2,C=3..........Z=26,AA=27,AB=28
這是我想的一種十分老土的方法,如果實在沒其他的招,你們將就著用哈。不過像你們這么聰明應(yīng)該也不會使用,對吧,哈哈哈哈哈~
別慌,編寫PhpSpreadsheet擴(kuò)展的大佬早已經(jīng)幫我們設(shè)計好了,直接拿來用就好了。那怎么用呢
來,直接上代碼:
$highestColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn)
實際使用代碼:

就是這么簡答粗暴哦,寥寥幾筆,希望能夠幫到你~~~~