Skip to main content

Writing Large XLSX Spreadsheet Files with PHP_XLSXWriter

สำหรับบทความนี้ ผู้เขียนจะแนะนำถึงการใช้งาน PHP XLSX Writer ซึ่งเป็น Library สำหรับ Export Excel ที่มีขนาดเล็ก รองรับการ Export ได้หลากหลายรูปแบบ ครับ

มาดูความสามารถ หลัก ๆ กันครับ

* supports PHP 5.2.1+

* takes UTF-8 encoded input

* multiple worksheets

* supports currency/date/numeric cell formatting, simple formulas

* supports basic cell styling

* supports writing huge 100K+ row spreadsheets

สำหรับข้อสุดท้ายอันนี้ถือว่า ช่วยแก้ปัญหา สำหรับการ Export ข้อมูลจำนวน มาก ๆ  เป็น แสน ๆ เร็คคอร์ด เป็น Excel  ซึ่งผู้เขียน ได้ลองใช้ Library หลาย ๆ ตัว พบว่า library ตัวนี้ มีขนาดเล็ก และ ใช้เวลาในการประมวลผล อยู่ในระดับที่ดีครับ ( Export ข้อมูลเป็น  Excel  ข้อมูลจำนวน 100000 ขึ้นไป )

รายละเอียดเพ่ิมเติม https://github.com/mk-j/PHP_XLSXWriter

ในการใช้งาน สามารถใช้งานได้ 2 รูปแบบด้วยกันคือ

1.เรียกใช้งานผ่าน หน้าเว็บ Browser เพื่อ Export File

ตัวอย่าง เมื่อเรียกไฟล์นี้  จะ Download  File Excel ผ่าน Web Browser ให้อัตโนมัติ

2.ใช้งานผ่าน CLI (Command-line user interface) เพื่อ สร้างไฟล์ Excel ก็ได้

ตัวอย่างการเรียกผ่าน CLI

จะมีการสร้างไฟล์  Excel ไว้ใน Path ที่ต้องการ เมือรันไฟล์นี้จะมีการสร้างไฟล์ Excel ไว้ที่ C://xampp/htdocs/Demo/example.xlsx (แต่ละเครื่อง path อาจไม่เหมือนกันนะครับ)

มาดูตัวอย่างกันเลยดีกว่า
(จริง ๆ แล้ว ในตัว Library ผู้ที่สร้าง mk-j  เขาได้ทำ ตัวอย่าง (Examples) ไว้ละเอียดอยู่แล้วครับ สามารถเปิดดูและทดลองรันได้เลย แต่ผู้เขียนอยาก บันทึกไว้เผื่อมีโอกาสได้ใช้งานอีกครับ)

หมายเหตุ ตัวอย่างทั้งหมดต่อไปนี้จะเป็นการเรียกใช้งาน แบบ CLI ครับ

 

Example 1  Create Excel File

สังเกตตรง $header เราสามารถกำหนดHeader ของ Cells และ รูปแบบของเซล์ (Format Cells) ให้กับข้อมูลที่ต้องการได้

ผลการทำงาน  PHP_XLSXWriter จะทำการสร้างไฟล์ xlsx-simple.xlsx  ให้ทันที

Example 2  Create Excel File Multiple Sheets

ในตัวอย่างนี้จะเป็นการ สร้างไฟล์ Excel แบบมีหลาย ๆ Sheet ให้ไฟล์เดียว

ผลการทำงาน  PHP_XLSXWriter จะทำการสร้างไฟล์ xlsx-sheets.xlsx  และจะมี การแบ่ง Sheet1 และ Sheet2  ภายในไฟล์ให้อีกด้วย

Example 3  Create Excel File Style Text

ในตัวอย่างนี้เป็นการสร้างไฟล์ Excel โดยที่เราสามารถ กำหนด รูปแบบของข้อความ ( Style )ใน cells

ตัวอย่าง Options ที่สามารถกำหนด Style ให้กับข้อความได้

ผลการทำงาน จะเห็นว่าเราสามารถกำหนดสี หรือ รูปแบบ ต่าง ๆ ให้กับข้อความต่าง ๆ ใน Excel ตามต้องการได้

Example 4  Create Excel File 250000 Rows

ตัวอย่างนี้จะเป็นการสร้างไฟล์ Excel ที่มีจำนวน Rows มากถึง 250000 (สองแสนห้าหมื่น)

โดยในหน้า Github ของ PHP_XLSXWriter  ได้ให้ข้อมูลไว้ว่าจะใช้เวลาประมวณผล ข้อมูล 2500000 ประมาณ 7 วินาที

ส่วนจะเป็นตามนั้นหรือไม่ต้องไปลองทดสอบกันเองครับ แต่การนำไปใช้งานจริงผู้เขียนคิดว่า อาจต้องใช้เวลามากกว่านี้ครับ ในส่วนของการไปดึงข้อมูลมาจาก Database  ก่อนที่ Library จะนำไปสร้างเป็นไฟล์ Excel

ตัวอย่างไฟล์ที่ได้

ตัวอย่างการ Export เป็นไฟล์ Excel โดยใช้ ข้อมูลจาก Database  MySQL

ก่อนอื่นเรามาสร้างฐานข้อมูลชื่อ Demo กันก่อนครับ

ตัวอย่าง Database SQL ที่ใช้ในตัวอย่างนี้

 

ตัวอย่างที่ 1  PHP_XLSXWriter Download File Excel With Web Browser

ผลการทำงาน เมื่อ เปิดไฟล์นี้ Web Browser จะมีการ Download ไฟล์ Excel ให้ อัตโนมัติครับ

 

ตัวอย่างที่ 2  PHP_XLSXWriter Create File Excel With CLI

ผลการทำงาน เมื่อรันไฟล์นี้ ผ่านหน้า Web Browser จะไม่มีอะไรเกิดขึ้นครับ แต่ จะมีการสร้างไฟล์ Excel ที่ชื่อว่า example_cli.xlsx ตาม path (ตัวอย่าง C://xampp/htdocs/Demo/) ให้ทันทีครับ

ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ต่อเพื่อน ๆ ที่กำลังหาข้อมูลการ Export Excel อยู่นะครับ

ตัวอย่าง Code ประกอบบทความ

PHP_XLSXWriter

ขอขอบคุณข้อมูลจาก
https://github.com/mk-j/PHP_XLSXWriter