PlusMagi's Blog By Pitt Phunsanit Backend,Cloud Computing,Database PHPExcel: ใส่ภาพในไฟล์

PHPExcel: ใส่ภาพในไฟล์

ในการพัฒนาซอฟต์แวร์ที่ต้องมีการส่งออกข้อมูล (Data Export) ไปยังรูปแบบไฟล์ Spreadsheet เช่น Microsoft Excel นั้น บ่อยครั้งที่เราไม่ได้ต้องการเพียงแค่ตัวเลขหรือข้อความเท่านั้น แต่เราอาจจำเป็นต้องรวมองค์ประกอบภาพกราฟิก (Image Assets) เข้าไปด้วย ไม่ว่าจะเป็นโลโก้บริษัท ภาพสินค้า หรือแผนภูมิ เพื่อให้รายงานมีความสมบูรณ์และเป็นมืออาชีพ การฝังรูปภาพเหล่านี้อย่างถูกต้องจึงเป็นทักษะที่สำคัญสำหรับนักพัฒนา

สำหรับนักพัฒนาที่ใช้ PHPExcel (หรือ PhpSpreadsheet ซึ่งเป็นเวอร์ชันที่พัฒนาต่อยอด) การแทรกรูปภาพทำได้ง่าย แต่ต้องเข้าใจถึงกลไกการทำงานของ Object Model ของไลบรารีนี้อย่างลึกซึ้ง บทความนี้จะเจาะลึกขั้นตอนและฟังก์ชันสำคัญในการนำภาพทั้งจาก Local File Path และ URL ภายนอกมาฝังในชีทได้อย่างถูกต้อง ทำให้คุณสามารถสร้างรายงานที่ดูเป็นมืออาชีพได้อย่างแท้จริง

💡 หลักการทำงานของการแทรกรูปภาพด้วย PHPExcel

PHPExcel ทำงานโดยการจัดการ Object Drawing ซึ่งเป็นวัตถุที่ทำหน้าที่ควบคุมตำแหน่ง ขนาด และประเภทขององค์ประกอบกราฟิก ไม่ว่าจะเป็นข้อความ รูปภาพ หรือแผนภูมิ เมื่อเราเรียกใช้เมธอดเพื่อเพิ่มรูปภาพ ระบบจะทำการสร้าง object นี้ขึ้นมาและผูกเข้ากับ Worksheet ที่ต้องการ โดยการกำหนดพิกัด (Cell Coordinates) และขนาดที่แม่นยำ

⚙️ ขั้นตอนสำคัญในการใช้งาน Image Assets

  1. การกำหนดแหล่งที่มา (Source): คุณสามารถระบุแหล่งที่มาของรูปภาพได้ 2 รูปแบบหลัก คือ Path ของไฟล์ในเครื่อง (`vendor/images/logo.png`) หรือ URL สาธารณะ (`https://example.com/image.jpg`)
  2. การโหลดภาพ (Loading): ไลบรารีจะรับผิดชอบในการโหลดไฟล์ภาพตาม Source ที่กำหนด และแปลงให้เป็น Object ที่พร้อมใช้งาน
  3. การวางตำแหน่ง (Placement): ใช้เมธอดเฉพาะเพื่อกำหนดว่าจะให้รูปภาพปรากฏที่พิกัดใดบนชีท (เช่น A1) และมีขนาดเท่าใด

💻 ตัวอย่างโค้ด: การฝังรูปภาพด้วย PHPExcel

ตัวอย่างนี้แสดงการโหลดภาพจาก Local Path และการวางภาพลงในชีทอย่างสมบูรณ์

PHP

use PhpOffice/', PhpOffice/', PhpOffice/'

// 1. สร้าง Worksheet และโหลดภาพ
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 2. กำหนด Source และเพิ่มรูปภาพ
// สมมติว่ามีไฟล์ logo.png อยู่ในโฟลเดอร์ images
$image_path = 'vendor/images/logo.png';
$worksheet->addPicture('A1', new ////Image($image_path));

// 3. (Optional) ปรับขนาดรูปภาพให้พอดี
$sheet->getDrawingCollection()->getPicture()->setWidth(200); 
$sheet->getDrawingCollection()->getPicture()->setHeight(100);

// 4. บันทึกไฟล์
$writer = new ////Xlsx($spreadsheet);
$writer->save('report_with_image.xlsx');

✅ Best Practices และข้อควรระวัง

ในการทำงานจริง ควรระวังเรื่องการจัดการ Error Handling เสมอ หากไฟล์ภาพไม่มีอยู่จริง หรือ Path ผิดพลาด ระบบจะแจ้ง Error ออกมา ควรมีการตรวจสอบ Path ก่อนการเรียกใช้เมธอด `addPicture()` เสมอ นอกจากนี้ การกำหนดขนาด (Width/Height) ด้วยโค้ดจะช่วยให้รายงานของคุณมี Layout ที่เป็นระเบียบและดูเป็นมืออาชีพมากยิ่งขึ้น

✨ บทสรุป

การฝังรูปภาพในไฟล์ Excel ด้วย PHPExcel ไม่ใช่แค่การใส่ภาพลงไปเฉยๆ แต่เป็นการจัดการ Object Drawing ที่ต้องอาศัยความเข้าใจใน Object Model ของไลบรารี การทำความเข้าใจขั้นตอนตั้งแต่การกำหนด Source, การโหลด, ไปจนถึงการกำหนดตำแหน่ง ทำให้คุณสามารถสร้าง Data Export ที่มีมูลค่าสูงและสมบูรณ์แบบได้อย่างมืออาชีพ ไม่ว่าจะเป็นการทำรายงานประจำวัน หรือการส่งมอบเอกสารที่มีแบรนด์ดิ้ง (Branding) คุณก็สามารถทำได้อย่างราบรื่นด้วยโค้ดเพียงไม่กี่บรรทัด