php導(dǎo)出大量數(shù)據(jù)到Excel,可以通過生成多個Excel文件,然后壓縮成壓縮包解決。
創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元奎屯做網(wǎng)站,已為上家服務(wù),為奎屯各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
方案是:假如我們數(shù)據(jù)庫有10w條數(shù)據(jù),每2000條數(shù)據(jù)生成一個Excel文件,這樣每次只要從數(shù)據(jù)庫里查詢出2000條數(shù)據(jù)即可,一定要分頁去查詢。
原因:主要是數(shù)據(jù)庫性能和寫文件性能。分頁查詢可以解決數(shù)據(jù)庫壓力的問題, 生成多個文件可以解決單個文件太大,后期維護(hù)Excel文件的問題。
要注意的:
1. 在導(dǎo)出邏輯文件開頭,一定要聲明 set_time_limit(0) ,防止腳本超時;
2. 每個文件生成后,適當(dāng)?shù)膕leep一下,讓程序休息一下下;
3. 因為一次導(dǎo)出最后要將生成的多個Excel文件打包成一個壓縮包,所以要刪除掉生成的Excel文件,節(jié)省服務(wù)器存儲空間;
php導(dǎo)出數(shù)據(jù)有兩種方式,一種是通過封裝好的phpexcel導(dǎo)出,一種是通過table導(dǎo)出數(shù)據(jù),指定header就可以導(dǎo)出數(shù)據(jù)。
上面是導(dǎo)出到excel中的方法,當(dāng)然你也可以導(dǎo)出數(shù)據(jù)直接到數(shù)據(jù)庫,或者你也可以到處數(shù)據(jù)到文件中,這個主要看你導(dǎo)出數(shù)據(jù)的格式要求。
看你截圖顯示的是數(shù)組格式,可以通過循環(huán)遍歷然后導(dǎo)入到響應(yīng)的文件中。
根據(jù)下列編碼程序可以。
1./*** 批量導(dǎo)出數(shù)據(jù)* @param $arr 從數(shù)據(jù)庫查詢出來,即要導(dǎo)出的數(shù)據(jù)* ?$name excel表歌名*/
2.function expExcel($arr,$name){?require_once 'PHPExcel.php';
3. //實例化?$objPHPExcel = new PHPExcel();?/*右鍵屬性所顯示的信息*/
4.$objPHPExcel-getProperties()-setCreator("zxf") ?//?-setLastModifiedBy("zxf") ?//最后一? -setTitle('數(shù)據(jù)EXCEL導(dǎo)出') ?//標(biāo)題-setSubject('數(shù)據(jù)EXCEL導(dǎo)出') //主題setDescription('導(dǎo)出數(shù)據(jù)') ?//描setKeywords("excel") ? //標(biāo)記setCategory("result file"); ?//類別
5. //設(shè)置當(dāng)前的表格??$objPHPExcel-setActiveSheetIndex(0);// 設(shè)置表格第一行顯示內(nèi)容$objPHPExcel-getActiveSheet()? -setCellValue('A1', '業(yè)主姓名')?-setCellValue('B1', '密碼')-setCellValue('C1', '手機(jī)號碼'? -setCellValue('D1', '地址')
6.//設(shè)置第一行為紅色字體?-getStyle('A1:D1')-getFont()-getColor()-setARGB(PHPExcel_Style_Color::COLOR_RED);$key = 1;?/*以下就是對處理Excel里的數(shù)據(jù)。
1、首先創(chuàng)建要插入100萬數(shù)據(jù)的表格,隨機(jī)產(chǎn)生數(shù)字。
2、其次創(chuàng)建存儲過程,并向表中插入數(shù)據(jù),調(diào)用存儲過程進(jìn)行插入數(shù)據(jù),插入300萬條數(shù)據(jù),且分幾次插入。
3、最后導(dǎo)出數(shù)據(jù)到csv,使用函數(shù)selectxxxintooutfile,其中outfile后面的路徑可以是Windows或macOS或者Linux。
php導(dǎo)出數(shù)據(jù)excel有專門的庫,當(dāng)導(dǎo)出少量數(shù)據(jù)的時候速度很快,但是當(dāng)數(shù)據(jù)量大的時候就會存在服務(wù)器內(nèi)存不夠之類的。
所以在導(dǎo)出大量數(shù)據(jù)的時候就應(yīng)該分頁查詢數(shù)據(jù),避免服務(wù)器宕機(jī)。正好PHP提供了fputcsv函數(shù)可以將數(shù)據(jù)寫入到csv文件中。
這樣我們就可以使用PHP對數(shù)據(jù)進(jìn)行分頁查詢,再寫入到csv文件中。