php導出大量數據(50000以上)到excel使用輕量級的PHP_XLSXWriter比用phpexcel效率更高,2020年9月10日實測!

編輯:睿兒發表于:2020-09-10 21:55:48 3 次閱讀
原創聲明:本內容(php導出大量數據(50000以上)到excel使用輕量級的PHP_XLSXWriter比用phpexcel效率更高,2020年9月10日實測!)為睿兒網絡原創作品,任何媒體、網站或個人未經本網協議授權不得轉載、鏈接、轉貼或以其他方式復制發布/發表。如需轉載請聯系站長QQ:7280374 請注明申請文章轉載!

在網頁應用中我們經常會把數據導出到EXCEL表,之前我一直使用PHPEXCEL作為導出類庫,因為它有豐富的EXCEL支持,可以隨意調整表格樣式。

但在近期有一個25萬數據的表需要導出,使用PHPEXCEL導出表格之后里面有很多內容是空的,雖然把數據分成了N個表格,每個表格只裝一萬數據,但效果還是如下圖所示,空了一片。


image.png


鑒于對表格樣式要求不高,但對數據要求又很嚴格必須都精確導出的前提下,我選擇了 PHP_XLSXWriter。

PHP_XLSXWriter 比 PHPEXCEL更輕量,只需要引用一個類文件即可。

但它對于大批量數據導出的支持卻更好。經過測試25萬條數據(還是按每個表格放1萬條來算),生成26個表格只用不到一分鐘。

而且所有數據庫中的內容都精確的導出來了,沒有任何問題。


在需要導出大批量數據的情況下,建議還是使用  PHP_XLSXWriter,下面我們來看一下它的用法。

image.png

你只需要在你的代碼中引用 這個CLASS文件即可(這點比PHPEXCEL要省心很多)


引用之后,你只需要創建幾個數組,然后使用下面這幾行代碼就可以生成EXCEL文件

image.png

其中 $header 是設置EXCEL的標題,示例代碼:

$header = array(
  'c1-text'=>'string',//text
  'c2-text'=>'@',//text
  'c3-integer'=>'integer',
  'c4-integer'=>'0',
  'c5-price'=>'price',
  'c6-price'=>'#,##0.00',//custom
  'c7-date'=>'date',
  'c8-date'=>'YYYY-MM-DD',
);

你需要定義好你需要的表格列名,列名后面跟上類型即可。


$styles1 是這列的樣式屬性,我們可以通過$styles1數組設置這列的 字體 字號 粗細 位置等屬性。

$styles1 = array('font'=>'Arial','font-size'=>11,'font-style'=>'bold', 'fill'=>'#eee', 'halign'=>'center', 'border'=>'left,right,top,bottom');

$rows 是表格的內容區域,依然是通過數組來定義的,有多少內容就加多少個數組元素即可。

$rows = array(
  array('x101',102,103,104,105,106,'2018-01-07','2018-01-08'),
  array('x201',202,203,204,205,206,'2018-02-07','2018-02-08'),
  array('x301',302,303,304,305,306,'2018-03-07','2018-03-08'),
  array('x401',402,403,404,405,406,'2018-04-07','2018-04-08'),
  array('x501',502,503,504,505,506,'2018-05-07','2018-05-08'),
  array('x601',602,603,604,605,606,'2018-06-07','2018-06-08'),
  array('x701',702,703,704,705,706,'2018-07-07','2018-07-08'),
);

$styles2 是定義了一下內容行的高度,注意:這個屬性對 header是不起作用的。

$styles2 = array('height'=>18);


有了這些示例屬性我們就可以直接用PHP代碼創建一個EXCEL文件了。


在實際應用中我們一般都是從數據庫中導出數據,所以還需要通過數據庫把幾個數組生成。

使用 show full columns 的方式把數據表字段都調用出來,然后通過循環的方式把它們push到 header數組中當標題。

image.png


把內容都取出來,通過 push方法加到 $rows 數組中,這樣就OK了。

image.png


再把幾個數組放在生成代碼處,就可以實現導出數據庫內容到EXCEL了。


再看一下 PHP_XLSXWriter 的說明: 5萬數據 1.4S  ,對于追求效率的同學來說這個簡直不要太爽了的說。。。

image.png

原文地址:http://www.htzgsd.com/library/202009/40.html(張家口導航-睿兒知識庫)

張家口睿兒網絡科技有限公司版權所有
亚洲AV片不卡无码