在實(shí)際工作中經(jīng)常會(huì)遇到將數(shù)據(jù)導(dǎo)出到Excel這樣的需求,對(duì)于php語(yǔ)言來(lái)說(shuō)導(dǎo)出excel也不是什么難事,因?yàn)榻柚鷓hpoffice之phpspreadsheet開(kāi)源庫(kù)可以輕松實(shí)現(xiàn).有過(guò)導(dǎo)出EXCEL經(jīng)驗(yàn)的人都知道在這個(gè)過(guò)程中最繁瑣的莫過(guò)于創(chuàng)建和操縱excel單元格,涉及寬度,高度,邊框,字體等等的設(shè)置.如果需要導(dǎo)出1000種不同格式和風(fēng)格的excel表格,那將是開(kāi)發(fā)人員的噩夢(mèng)!
解決思路:
首先我們可以確定的是導(dǎo)出的excel到底長(zhǎng)什么樣子,例如:
excel導(dǎo)出模板示例
知道了導(dǎo)出excel的長(zhǎng)相之后,以此為依據(jù),生成"制造EXCEL模板"的源代碼,也就是說(shuō)依照導(dǎo)出excel的長(zhǎng)相,編寫(xiě)代碼生成器,代碼生成器的終極目標(biāo)就是輸出源代碼,輸出的源代碼運(yùn)行之后可以生成EXCEL文件,輸出的EXCEL文件就是我們最終要導(dǎo)出的EXCEL文件,例如:
excel代碼生成器輸出的源代碼
這樣我們就將寫(xiě)代碼的任務(wù)交給計(jì)算機(jī)去完成了,完美解放自己的雙手!
實(shí)踐:
有了這個(gè)思路,那么接下來(lái)就是動(dòng)手實(shí)現(xiàn)代碼生成器.
分析excel導(dǎo)出模板的規(guī)律,可以將一般的EXCEL分為頭部固定格式,中間動(dòng)態(tài)數(shù)據(jù)填充,頁(yè)尾注解這三個(gè)部分,那么我們就可以依據(jù)這些總結(jié)出來(lái)的規(guī)律來(lái)編寫(xiě)代碼生成器工具了,例如:
代碼生成器工具代碼片段
有了代碼生成器工具,那么相類似的EXCEL文件導(dǎo)出將不在話下.
總結(jié):
在創(chuàng)建excel單元格并進(jìn)行格式設(shè)定的時(shí)候,會(huì)導(dǎo)致程序執(zhí)行速度慢,解決方案是設(shè)置默認(rèn)樣式,盡量少的調(diào)用樣式設(shè)定函數(shù).
將php執(zhí)行時(shí)間設(shè)置為無(wú)限.
將php執(zhí)行內(nèi)存量加大.
phpspreadsheet開(kāi)源庫(kù)功能非常強(qiáng)大!幾乎囊括了excel操作的方方面面,是PHP導(dǎo)出EXCEL的必備神器!