輕松解決PHPExcel導出10W行超時和內(nèi)存溢出問題

專題1:PHPExcel的疑難雜癥各個擊破

本文使用了一個輕量級的PHP的Excel操作庫-PHP_XLSXWriter

一.解決行的問題

  • 10w行excel數(shù)據(jù)導出僅需要5.26秒,再也不用擔心excel導出超過1w行就超時(php.ini中的maxexecutiontime)

  • 內(nèi)存棧溢出,使用過PHPExcel的同學應該清楚注簿,導出的文件行還沒到1w行就報錯了汛闸,原因是單個PHP進程超過了 php.ini配置的memory_limit

  • 解決了csv導出時樣式丟失击喂,長數(shù)字變成科學計數(shù)法的問題捍靠,亂碼的問題


  1. <?php

  2. #使用輕量級的excel操作庫PHP_XLSXWriter

  3. $timeStart = microtime(true);

  4. require_once __DIR__."/../PHP_XLSXWriter/vendor/autoload.php";

  5. $writer =newXLSXWriter();

  6. $sheetHeader =[

  7. ? ?'商品id'=>'string',

  8. ? ?'庫存量'=>'string',

  9. ? ?'單價'=>'string',

  10. ? ?'名稱'=>'string',

  11. ? ?'賣家聯(lián)系電話'=>'string'//長數(shù)字再也不用擔心會變成科學計數(shù)法了

  12. ];

  13. $writer->writeSheetHeader('Sheet1', ?$sheetHeader);//optional

  14. for($i=0; $i<100000; $i++)

  15. {

  16. ? ?$s1 = $i+1;

  17. ? ?$s2 = mt_rand(0,1000);

  18. ? ?$s3 = mt_rand(100,999)/10;

  19. ? ?$s4 ="商品".$s1;

  20. ? ?$s5 ="13713147601";//隨便輸入的

  21. ? ?$writer->writeSheetRow('Sheet1', array($s1, $s2, $s3, $s4, $s5));

  22. }

  23. $writer->writeToFile('goods_info.xlsx');

  24. echo floor((memory_get_peak_usage())/1024/1024)."MB";

  25. echo "
    "
    ;

  26. echo microtime(true)-$timeStart;


源碼地址:https://gitee.com/nodestudy/The-PHP-Best-Practice

文件目錄結(jié)構(gòu):

一.解決列的問題

最近有個需求,THINKPHP3.2中對數(shù)據(jù)進行導出羽氮,數(shù)據(jù)一共有43項豁鲤,導出時候就會抱錯?Invalid cell coordinate [1

因為phpexcel 的cell.php里默認就設置了26列秽誊,而且判斷方法里默認從a-z然后下一個列就是aa1了 鲸沮,而實際上在excel里z后面應該是AA琳骡,AB,AC讼溺,AD楣号,AE,AF這樣 所以需要改判斷方法,我之前寫過一篇excel的導出怒坯,只需要吧其中一個方法改動一下炫狱,改動的思想就是 當超過26列的時候 下一列命名應該是AA,AB剔猿,而不是? aa1,AA2,改進方法如下




1视译、將列的字母轉(zhuǎn)成數(shù)字序號使用,代碼如下:

  1. $phpExcel = new PHPExcel();

  2. //$array需要導出的數(shù)組

  3. foreach($array as $k => $value){

  4. $title_col = PHPExcel_Cell::stringFromColumnIndex($k); // 從0開始 A-Z,AA,AB...

  5. $phpExcel->getActiveSheet()->setCellValue($title_col."1",$value);//標題行??A1-Z1,AA1,AB1...

  6. }

?

2、將列的數(shù)字序號轉(zhuǎn)成字母使用,代碼如下:

PHPExcel_Cell::columnIndexFromString('AA');

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末归敬,一起剝皮案震驚了整個濱河市酷含,隨后出現(xiàn)的幾起案子鄙早,更是在濱河造成了極大的恐慌,老刑警劉巖椅亚,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件限番,死亡現(xiàn)場離奇詭異,居然都是意外死亡呀舔,警方通過查閱死者的電腦和手機弥虐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媚赖,“玉大人霜瘪,你說我怎么就攤上這事【寤牵” “怎么了粥庄?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長豺妓。 經(jīng)常有香客問我惜互,道長,這世上最難降的妖魔是什么琳拭? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任训堆,我火速辦了婚禮,結(jié)果婚禮上白嘁,老公的妹妹穿的比我還像新娘坑鱼。我一直安慰自己,他們只是感情好絮缅,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布鲁沥。 她就那樣靜靜地躺著,像睡著了一般耕魄。 火紅的嫁衣襯著肌膚如雪画恰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天吸奴,我揣著相機與錄音允扇,去河邊找鬼。 笑死则奥,一個胖子當著我的面吹牛考润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播读处,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼糊治,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罚舱?” 一聲冷哼從身側(cè)響起井辜,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤揖赴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抑胎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燥滑,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年阿逃,在試婚紗的時候發(fā)現(xiàn)自己被綠了铭拧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡恃锉,死狀恐怖搀菩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情破托,我是刑警寧澤肪跋,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站土砂,受9級特大地震影響州既,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萝映,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一吴叶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧序臂,春花似錦蚌卤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至构订,卻和暖如春侮叮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鲫咽。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工签赃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人分尸。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像歹嘹,于是被迫代替她去往敵國和親箩绍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 首先到phpexcel官網(wǎng)上下載最新的phpexcel類尺上,下周解壓縮一個classes文件夾材蛛,里面包含了PHPEx...
    gongji閱讀 6,725評論 0 3
  • TP5.0 微信公賬號+小程序數(shù)據(jù)打通CRMEB V2.6 導出表格圖片 namespace service; u...
    那個人_50f8閱讀 793評論 0 0
  • 博主在使用ThinkPHP開發(fā)網(wǎng)站的時候卑吭,經(jīng)常會遇到用戶要求導出Excel文件芽淡,經(jīng)過在網(wǎng)上尋找后發(fā)現(xiàn),PHPExc...
    大劉的英語世界閱讀 6,357評論 0 13
  • 1.composer 下載 :composer require phpoffice/phpexcel << ++下...
    摳腳0閱讀 592評論 0 0
  • 人人新年新祈望豆赏,回望一月毫不差挣菲; 權(quán)當去年沒兩樣,能多出來笑哈哈掷邦。
    雪中凝閱讀 160評論 0 4