新聞中心
PHP導(dǎo)出100萬數(shù)據(jù)到excel
php導(dǎo)出數(shù)據(jù)excel有專門的庫,當(dāng)導(dǎo)出少量數(shù)據(jù)的時(shí)候速度很快,但是當(dāng)數(shù)據(jù)量大的時(shí)候就會存在服務(wù)器內(nèi)存不夠之類的。

“真誠服務(wù),讓網(wǎng)絡(luò)創(chuàng)造價(jià)值”是我們的服務(wù)理念,創(chuàng)新互聯(lián)團(tuán)隊(duì)10多年如一日始終堅(jiān)持在網(wǎng)站建設(shè)領(lǐng)域,為客戶提供優(yōu)質(zhì)服。不管你處于什么行業(yè),助你輕松跨入“互聯(lián)網(wǎng)+”時(shí)代,PC網(wǎng)站+手機(jī)網(wǎng)站+公眾號+小程序開發(fā)。
所以在導(dǎo)出大量數(shù)據(jù)的時(shí)候就應(yīng)該分頁查詢數(shù)據(jù),避免服務(wù)器宕機(jī)。正好PHP提供了fputcsv函數(shù)可以將數(shù)據(jù)寫入到csv文件中。
這樣我們就可以使用PHP對數(shù)據(jù)進(jìn)行分頁查詢,再寫入到csv文件中。
php怎么導(dǎo)出大量數(shù)據(jù)的Excel
不帶格式的:
1、 直接寫csv文件。
2、COM調(diào)用adodb操作excel讀取
想要帶格式的標(biāo)準(zhǔn)xls文件:
請用COM調(diào)用adodb讀取,然后調(diào)用excel.application格式化。
其他的方法就是扯淡,別給我說
1、phpexcel,那資源消耗只適合玩單機(jī),兼容性也不夠!
2、pear的可以帶格式輸出,但兼容性很差,經(jīng)常打不開
3、xml方式,制作模板 比較費(fèi)時(shí)。
總結(jié):不帶格式,就用csv最簡單
想帶格式就用adodb+excel.application來操作,(注意:excel 格式化很慢,adodb導(dǎo)出很快,帶格式寫excel就是個悲劇?。?/p>
如何用php導(dǎo)出導(dǎo)入大數(shù)據(jù)庫
在使用PhpMyAdmin的時(shí)候經(jīng)常用到數(shù)據(jù)的導(dǎo)入和導(dǎo)出(Export/Import),但是在導(dǎo)入大數(shù)據(jù)的時(shí)候由于php上傳文件的限制和腳本響應(yīng)時(shí)間的限制,導(dǎo)致phpMyAdmin無法導(dǎo)入大數(shù)據(jù)。很多時(shí)候都是由于文件過大,從本地瀏覽上傳導(dǎo)入,容易中斷失敗,有沒有更好的方法呢?
方法:
在phpMyAdmin的目錄下,找到根目錄的config.inc.php文件,
打開config.inc.php文件,查找$cfg['UploadDir'],這個參數(shù)就是設(shè)定導(dǎo)入文件存放的目錄,這里把值設(shè)定為:ImportSQLFile。
在phpMyAdmin目錄下,建立以ImportSQLFile命名的文件夾,
把我們需要導(dǎo)入的數(shù)據(jù)文件,放到ImportSQLFile文件夾下面,非常簡單,
登入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文件,沒有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。
php怎么導(dǎo)出大量數(shù)據(jù)的Excel,phpexcel
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ù)通過fputcsv寫到文件句柄
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ù)過多造成問題
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導(dǎo)出大量數(shù)據(jù)的Excel:
PHP從數(shù)據(jù)庫分多次讀取100萬行記錄,和分多次將100萬行寫入文本文件都沒問題
Excel可以支持100萬行記錄,Excel 2003最大支持65536行,從2007版開始支持104萬行了,目前2007的盜版應(yīng)該比較普及了-_-! 問清楚客戶是什么版本。
要導(dǎo)出excel的理由是非常充分和正確的,應(yīng)該繼續(xù)堅(jiān)持。業(yè)務(wù)人員最熟悉的就是Excel,實(shí)在不熟悉現(xiàn)學(xué)現(xiàn)用也比別的快。只是要注意,當(dāng)數(shù)據(jù)量達(dá)到10萬行這個級別時(shí),Excel的公式填充將會非常非常慢,如果再有LOOKUP()公式,基本上十分鐘內(nèi)處理CPU滿載進(jìn)程管理器殺不掉的狀態(tài),這時(shí)候其實(shí)xampp + phpmyadmin是一個易用性和性能都最平衡的選擇
PHPExcel輸出的是Excel XML格式,有個XML頭和尾,中間是數(shù)據(jù)Body,需要將100萬行都賦值給一個數(shù)組才可以調(diào)用PHPExcel-write(),這容易導(dǎo)致PHP執(zhí)行超時(shí)或者內(nèi)存超限,不妨調(diào)整一下php.ini配置,把超時(shí)時(shí)間和內(nèi)存限制都改到很大
如果是輸出csv格式,那就太簡單了,你的問題可能是沒給字段內(nèi)容加引號,加上引號再調(diào)用fputcsv試試?其實(shí)fputcsv做的事情特別簡單,你甚至可以不管它,自己把CSV文件的每一行拼接好了之后用file_put_contents寫入
名稱欄目:php大量數(shù)據(jù)導(dǎo)出怎么做,php導(dǎo)出大量數(shù)據(jù)到excel
當(dāng)前鏈接:http://www.dlmjj.cn/article/hshocc.html


咨詢
建站咨詢
