如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2020年9月7日

PHP程式設計: PHP程式如何將圖片放入excel檔案中 Using PHPExcel

作者: Fred F.M. Wang (FW知識瑣記) 日期:20200907

PHP程式中可以使用PHPExcel讀取製作好的Excel樣板,根據條件動態寫入資料,產生新的Excel檔案,用於產生Excel報表檔。

如果要根據不同條件放入不同的簽名圖片檔要怎麼做?

可以參考下面範例 : 

// 主程式

$objPHPExcelOut = PHPExcel_IOFactory::load($outfilepath); // $outfilepath寫入的Excel檔案路徑

$PHPExcelWriter = PHPExcel_IOFactory::createWriter($objPHPExcelOut, "Excel2007");

….

<寫入資料>

.....

 $row = 30;

 $signcol = "E";

 $offsetX = 27;

 $offsetY = 10;    

// 寫入簽名檔

 $this->addSignImage($objPHPExcelOut,$signcol,$row,$offsetX,$offsetY);



/* *****  副程式:寫入簽名檔 ***** */

private function addSignImage($objPHPExcelOut,$column,$row,$offsetX,$offsetY) {

    $signimgfile = dirname($_SERVER["SCRIPT_FILENAME"]) . "<圖片來源檔案路徑>";   

// <圖片來源檔案路徑與檔名> 例如"/files/shipinf/templates/image_imqsign.png"     

    $gdImage = imagecreatefrompng($signimgfile);    

    

// 保持PNG圖片背景透明

    imagealphablending($gdImage, false);  // 關閉 alpha 渲染

    imagesavealpha($gdImage, true); // 並設置 alpha 標誌以在保存 PNG 圖像時保存完整的 

alpha 通道資訊

    

    $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();                

    $objDrawing->setName("signimage");

    $objDrawing->setDescription("signimage");

    $objDrawing->setImageResource($gdImage);      

$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);

    $objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);

    $objDrawing->setCoordinates($column.$row);    // 圖片左上角放置在哪個儲存格的位置

    $objDrawing->setHeight(390);   // 設定圖片高度(寬度會等比例變寬)

    $objDrawing->setOffsetX($offsetX);  // 向左位移幾個像素

    $objDrawing->setOffsetY($offsetY); // 向下位移幾個像素

    $objDrawing->setWorksheet($objPHPExcelOut->getActiveSheet());        

}