鍍金池/ 問答/PHP  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全  Office/ 用php把數(shù)據(jù)庫(kù)的表導(dǎo)出成excel或csv,并要求每頁(yè)最多顯示5萬數(shù)據(jù)

用php把數(shù)據(jù)庫(kù)的表導(dǎo)出成excel或csv,并要求每頁(yè)最多顯示5萬數(shù)據(jù)

如題:

我在網(wǎng)上找了很多資料,發(fā)現(xiàn)有些使用擴(kuò)展文件,但又沒有清楚說明怎么使用,有些又沒有分頁(yè)效果

所以希望在這里能有人幫幫忙,謝謝

回答
編輯回答
貓館

excel使用這個(gè)phpexcel

至于數(shù)據(jù)就需要分片寫入excel文件,一次寫入1000條或者2000條啊,一次數(shù)據(jù)太多,會(huì)導(dǎo)致內(nèi)存溢出導(dǎo)致錯(cuò)誤,每一1000位一個(gè)文件,最后在合并文件就可以了,一次寫入50000條,這種做法是不支持的(除非你服務(wù)器很好)

2017年5月12日 17:14
編輯回答
喵小咪

用CSV吧,然后用緩沖,一次寫1M的數(shù)據(jù),直到寫滿5W條

2017年2月21日 06:54
編輯回答
嘟尛嘴
$offset = 0;
$limit = 1000;
$fp = fopen('export.csv','wb');
do {
    $list = $db->offset($offset)->limit($limit)->all(); // 示例代碼,查出數(shù)據(jù)列表即可
    foreach($list as $row) {
        $line = sprintf('%s,%s,%s,%s\n',$row['name'],$row['phone'],$row['company'],$row['position']); // 字段名,csv要求逗號(hào)分隔
        fwrite($fp,$line);
    }
    if(count($list)<$limit) { // 查出來的條數(shù)小于每頁(yè)大小,證明沒數(shù)據(jù)了,結(jié)束
        break;
    }
    $offset += $limit; // 增加offset值
}while(true);
2018年6月27日 15:25