php導(dǎo)出數(shù)據(jù)excel有專(zhuān)門(mén)的庫(kù),當(dāng)導(dǎo)出少量數(shù)據(jù)的時(shí)候速度很快,但是當(dāng)數(shù)據(jù)量大的時(shí)候就會(huì)存在服務(wù)器內(nèi)存不夠之類(lèi)的。

“真誠(chéng)服務(wù),讓網(wǎng)絡(luò)創(chuàng)造價(jià)值”是我們的服務(wù)理念,創(chuàng)新互聯(lián)團(tuán)隊(duì)10多年如一日始終堅(jiān)持在網(wǎng)站建設(shè)領(lǐng)域,為客戶(hù)提供優(yōu)質(zhì)服。不管你處于什么行業(yè),助你輕松跨入“互聯(lián)網(wǎng)+”時(shí)代,PC網(wǎng)站+手機(jī)網(wǎng)站+公眾號(hào)+小程序開(kāi)發(fā)。
所以在導(dǎo)出大量數(shù)據(jù)的時(shí)候就應(yīng)該分頁(yè)查詢(xún)數(shù)據(jù),避免服務(wù)器宕機(jī)。正好PHP提供了fputcsv函數(shù)可以將數(shù)據(jù)寫(xiě)入到csv文件中。
這樣我們就可以使用PHP對(duì)數(shù)據(jù)進(jìn)行分頁(yè)查詢(xún),再寫(xiě)入到csv文件中。
不帶格式的:
1、 直接寫(xiě)csv文件。
2、COM調(diào)用adodb操作excel讀取
想要帶格式的標(biāo)準(zhǔn)xls文件:
請(qǐng)用COM調(diào)用adodb讀取,然后調(diào)用excel.application格式化。
其他的方法就是扯淡,別給我說(shuō)
1、phpexcel,那資源消耗只適合玩單機(jī),兼容性也不夠!
2、pear的可以帶格式輸出,但兼容性很差,經(jīng)常打不開(kāi)
3、xml方式,制作模板 比較費(fèi)時(shí)。
總結(jié):不帶格式,就用csv最簡(jiǎn)單
想帶格式就用adodb+excel.application來(lái)操作,(注意:excel 格式化很慢,adodb導(dǎo)出很快,帶格式寫(xiě)excel就是個(gè)悲劇!)
在使用PhpMyAdmin的時(shí)候經(jīng)常用到數(shù)據(jù)的導(dǎo)入和導(dǎo)出(Export/Import),但是在導(dǎo)入大數(shù)據(jù)的時(shí)候由于php上傳文件的限制和腳本響應(yīng)時(shí)間的限制,導(dǎo)致phpMyAdmin無(wú)法導(dǎo)入大數(shù)據(jù)。很多時(shí)候都是由于文件過(guò)大,從本地瀏覽上傳導(dǎo)入,容易中斷失敗,有沒(méi)有更好的方法呢?
方法:
在phpMyAdmin的目錄下,找到根目錄的config.inc.php文件,
打開(kāi)config.inc.php文件,查找$cfg['UploadDir'],這個(gè)參數(shù)就是設(shè)定導(dǎo)入文件存放的目錄,這里把值設(shè)定為:ImportSQLFile。
在phpMyAdmin目錄下,建立以ImportSQLFile命名的文件夾,
把我們需要導(dǎo)入的數(shù)據(jù)文件,放到ImportSQLFile文件夾下面,非常簡(jiǎn)單,
登入phpMyAdmin,選擇需要導(dǎo)入的數(shù)據(jù),點(diǎn)擊導(dǎo)航條上面的“導(dǎo)入”按鈕,
選中“從網(wǎng)站服務(wù)器上傳文件夾ImportSQLFile/中選擇:”選項(xiàng),并需要導(dǎo)入的數(shù)據(jù)文件,
最后點(diǎn)擊“執(zhí)行”,即可導(dǎo)入成功。
注意事項(xiàng)
如果在config.inc.php文件,沒(méi)有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。
1 $fp = fopen('php://output', 'a');
2
3 // 輸出Excel列名信息
4 $head = array("郵件");
5 foreach ($head as $i = $v) {
6 // CSV的Excel支持GBK編碼,一定要轉(zhuǎn)換,否則亂碼
7 $head[$i] = iconv('utf-8', 'gbk', $v);
8 }
9
10 // 將數(shù)據(jù)通過(guò)fputcsv寫(xiě)到文件句柄
11 fputcsv($fp, $head);
12
13 // 計(jì)數(shù)器
14 $cnt = 0;
15 // 每隔$limit行,刷新一下輸出buffer,不要太大,也不要太小
16 $limit = 100000;
17
18 // 逐行取出數(shù)據(jù),不浪費(fèi)內(nèi)存
19 $count = count($email);
20
21 for($t=0;$t$count;$t++) {
22
23 $cnt ++;
24 if ($limit == $cnt) { //刷新一下輸出buffer,防止由于數(shù)據(jù)過(guò)多造成問(wèn)題
25 ob_flush();
26 flush();
27 $cnt = 0;
28 }
29 $row[] = $email[$t];
30 foreach ($row as $i = $v) {
31 $row[$i] = iconv('utf-8', 'gbk', $v);
32 }
33 fputcsv($fp, $row);
34 unset($row);
35 }
php導(dǎo)出大量數(shù)據(jù)的Excel:
PHP從數(shù)據(jù)庫(kù)分多次讀取100萬(wàn)行記錄,和分多次將100萬(wàn)行寫(xiě)入文本文件都沒(méi)問(wèn)題
Excel可以支持100萬(wàn)行記錄,Excel 2003最大支持65536行,從2007版開(kāi)始支持104萬(wàn)行了,目前2007的盜版應(yīng)該比較普及了-_-! 問(wèn)清楚客戶(hù)是什么版本。
要導(dǎo)出excel的理由是非常充分和正確的,應(yīng)該繼續(xù)堅(jiān)持。業(yè)務(wù)人員最熟悉的就是Excel,實(shí)在不熟悉現(xiàn)學(xué)現(xiàn)用也比別的快。只是要注意,當(dāng)數(shù)據(jù)量達(dá)到10萬(wàn)行這個(gè)級(jí)別時(shí),Excel的公式填充將會(huì)非常非常慢,如果再有LOOKUP()公式,基本上十分鐘內(nèi)處理CPU滿載進(jìn)程管理器殺不掉的狀態(tài),這時(shí)候其實(shí)xampp + phpmyadmin是一個(gè)易用性和性能都最平衡的選擇
PHPExcel輸出的是Excel XML格式,有個(gè)XML頭和尾,中間是數(shù)據(jù)Body,需要將100萬(wàn)行都賦值給一個(gè)數(shù)組才可以調(diào)用PHPExcel-write(),這容易導(dǎo)致PHP執(zhí)行超時(shí)或者內(nèi)存超限,不妨調(diào)整一下php.ini配置,把超時(shí)時(shí)間和內(nèi)存限制都改到很大
如果是輸出csv格式,那就太簡(jiǎn)單了,你的問(wèn)題可能是沒(méi)給字段內(nèi)容加引號(hào),加上引號(hào)再調(diào)用fputcsv試試?其實(shí)fputcsv做的事情特別簡(jiǎn)單,你甚至可以不管它,自己把CSV文件的每一行拼接好了之后用file_put_contents寫(xiě)入
分享文章:php大量數(shù)據(jù)導(dǎo)出怎么做,php導(dǎo)出大量數(shù)據(jù)到excel
文章源于:http://chinadenli.net/article22/hshocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、建站公司、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)