php導(dǎo)出數(shù)據(jù)excel有專門的庫,當(dāng)導(dǎo)出少量數(shù)據(jù)的時候速度很快,但是當(dāng)數(shù)據(jù)量大的時候就會存在服務(wù)器內(nèi)存不夠之類的。
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計,網(wǎng)站托管運(yùn)營等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)公司。
所以在導(dǎo)出大量數(shù)據(jù)的時候就應(yīng)該分頁查詢數(shù)據(jù),避免服務(wù)器宕機(jī)。正好PHP提供了fputcsv函數(shù)可以將數(shù)據(jù)寫入到csv文件中。
這樣我們就可以使用PHP對數(shù)據(jù)進(jìn)行分頁查詢,再寫入到csv文件中。
生成excel 把數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到excel就行了,教你個簡單的寫法
?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
?
\n結(jié)尾的是換行 \T是下一個單元格,直接查詢輸出就行
不帶格式的:
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)時。
總結(jié):不帶格式,就用csv最簡單
想帶格式就用adodb+excel.application來操作,(注意:excel 格式化很慢,adodb導(dǎo)出很快,帶格式寫excel就是個悲?。。?/p>
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。
$fp?=?fopen('php://output',?'a');
//?輸出Excel列名信息
$head?=?array("電子郵件");
foreach?($head?as?$i?=?$v)?{
//?CSV的Excel支持GBK編碼,一定要轉(zhuǎn)換,否則亂碼
$head[$i]?=?iconv('utf-8',?'gbk',?$v);
}
//?將數(shù)據(jù)通過fputcsv寫到文件句柄
fputcsv($fp,?$head);
//?計數(shù)器
$cnt?=?0;
//?每隔$limit行,刷新一下輸出buffer,不要太大,也不要太小
$limit?=?100000;
//?逐行取出數(shù)據(jù),不浪費(fèi)內(nèi)存
$count?=?count($email);
for($t=0;$t$count;$t++)?{
$cnt?++;
if?($limit?==?$cnt)?{?//刷新一下輸出buffer,防止由于數(shù)據(jù)過多造成問題
ob_flush();
flush();
$cnt?=?0;
}
$row[]?=?$email[$t];
foreach?($row?as?$i?=?$v)?{
$row[$i]?=?iconv('utf-8',?'gbk',?$v);
}
fputcsv($fp,?$row);
unset($row);
}
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)的文件中。
當(dāng)前題目:php導(dǎo)出10萬數(shù)據(jù) php導(dǎo)出23萬條數(shù)據(jù)
分享鏈接:http://chinadenli.net/article22/hgcijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)