PhpSpreadsheet 讀取excel大于26列出錯

對于一個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)

實際使用代碼:


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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容