ป้ายกำกับ: Image

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

บางครั้งการ export ข้อมูลออกไปเป็นไฟล์ excel ก็ต้องการใส่ภาพลงไปด้วย อาจจะเป็นโลโก้บริษัท หรือว่าเป็นภาพตัวอย่างสินค้า PHPExcel สามารถแทรกภาพได้ทั้งจาก file หรือ url ของภาพที่ออนไลน์อยู่

<?php

include 'vendor/phpoffice/phpexcel/Classes/PHPExcel.php';

$objPHPExcel = new PHPExcel () ;

/* Set default style */
$defaultStyle = $objPHPExcel->getDefaultStyle () ;

$defaultStyle->getFont () ->setName ('Arial') ->setSize (11) ;

/* Set document properties */
$title = 'Exports_Datas_' . date ('Y-m-d_H:i') ;
$objPHPExcel->getProperties () ->setCreator ('Pitt Phunsanit') ->setCategory ('Exports Datas') ->setDescription ($title) ->setKeywords ('Exports Datas ' . date ('Y-m-d')) ->setSubject ($title) ->setTitle ($title) ;

/* rename sheet */
$objWorkSheet = $objPHPExcel->getActiveSheet () ;
$objWorkSheet->setTitle ('Exports Datas') ;

/* image path */
$images = [
 'https://raw.githubusercontent.com/PHPOffice/PHPExcel/1.8/Examples/images/officelogo.jpg',
 'https://raw.githubusercontent.com/PHPOffice/PHPExcel/1.8/Examples/images/paid.png',
 'https://raw.githubusercontent.com/PHPOffice/PHPExcel/1.8/Examples/images/phpexcel_logo.gif',
 'https://raw.githubusercontent.com/PHPOffice/PHPExcel/1.8/Examples/images/termsconditions.jpg',
 'vendor/phpoffice/phpexcel/Examples/images/officelogo.jpg',
 'vendor/phpoffice/phpexcel/Examples/images/paid.png',
 'vendor/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif',
 'vendor/phpoffice/phpexcel/Examples/images/termsconditions.jpg',
];

$rowNo = 0;
foreach ($images as $image) {
 $rowNo++;

 $coordinate = 'A' . $rowNo;

 $objWorkSheet->getRowDimension ($rowNo) ->setRowHeight (90) ;
 $objWorkSheet->setCellValue ($coordinate, $image) ;

 switch (strtolower (pathinfo ($image, PATHINFO_EXTENSION))) {
 case 'gif':
 $gdImage = imagecreatefromgif ($image) ;
 $mimetype = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF;
 $render = PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF;
 break;

 case 'jpeg':
 case 'jpg':
 $gdImage = imagecreatefromjpeg ($image) ;
 $mimetype = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG;
 $render = PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG;
 break;

 case 'png':
 $gdImage = imagecreatefrompng ($image) ;
 $mimetype = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG;
 $render = PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG;
 break;
 }

 $objDrawing = new PHPExcel_Worksheet_MemoryDrawing () ;

 $objDrawing->setCoordinates ($coordinate) ;
 $objDrawing->setImageResource ($gdImage) ;
 $objDrawing->setWorksheet ($objWorkSheet) ;

 /* optional */
 $objDrawing->setDescription ($image) ;
 $objDrawing->setMimeType ($mimetype) ;
 $objDrawing->setName (pathinfo ($image, PATHINFO_FILENAME)) ;
 $objDrawing->setRenderingFunction ($render) ;
 $objDrawing->setResizeProportional (true) ;
 $objDrawing->setWidth (100) ;

}

$objWorkSheet->getColumnDimension ('A') ->setAutoSize (true) ;

/* write */
$objWriter = PHPExcel_IOFactory::createWriter ($objPHPExcel, 'Excel2007') ;
header ('Content-Type: application/vnd.ms-excel') ;
header ('Content-Disposition: attachment;filename="' . $title . '.xlsx"') ;
header ('Cache-Control: max-age=0') ;
header ('Cache-Control: no-store, no-cache, must-revalidate, max-age=0') ;
header ('Cache-Control: post-check=0, pre-check=0', false) ;
header ('Pragma: no-cache') ;
$objWriter->save ('php://output') ;

อธิบาย

setCoordinates
ตำแหน่งที่ให้ภาพไปลอยอยู่
setDescription
รายละเอียด (optional)
setName
ชื่อภาพ (optional)
setResizeProportional
รักษาสัดส่วนของภาพเอาไว้
setWorksheet
อ้างถึง Active Sheet หรือ sheet ที่ใส่ข้อมูล
ถ้าเลือกใช้ PHPExcel_IOFactory::createWriter ผิด version เช่น ‘Excel5’ อาจจะทำให้ภาพมีสัดส่วนเพี้ยนได้