PHPExcel 導出包含圖片excel

<?php
// 這裏用的PHPExcel版本號爲1.8.0
// 下載地址https://github.com/PHPOffice/PHPExcel 下載ZIP壓縮包
// 下載後將Classes文件夾提取出來供後續使用


/*
原插件存放目錄結構
根目錄下Classes
            --PHPExcel文件夾
            --PHPExcel.php文件
*/
/** Include PHPExcel */
require_once '/Classes/PHPExcel.php';
/*
在thinkPHP中 將Classes文件夾重命名成PHPExcel,放到目錄 ThinkPHP/Library/Vendor下
存放到thinkPHP中後目錄結構
根目錄下ThinkPHP
            --Library
                    --Vendor
                            --PHPExcel
                                    --PHPExcel文件夾
                                    --PHPExcel.php文件
*/

// 在thinkPHP中包含PHPExcel.php文件方式
// vendor('PHPExcel.PHPExcel');
// 而且在thinkPHP中調用插件的全部類名前加反斜槓 \


// Create new PHPExcel object
$objPHPExcel = new \PHPExcel ();

// Set document properties
$objPHPExcel->getProperties ()->setCreator ( "zend" )-> // 做者
setLastModifiedBy ( "zend" )-> // 最後一次保存者
setTitle ( "Office 2007 XLSX Document" )-> // 標題
setSubject ( "Office 2007 XLSX Document" )-> // 主題
setDescription ( "document for Office 2007 XLSX, generated using PHP classes." )-> // 備註
setKeywords ( "office 2007 openxml php" )-> // 標記
setCategory ( "result file" ); // 類別

$objPHPExcel->getActiveSheet ()->getColumnDimension ( 'A' )->setWidth ( '15' ); // 設置列寬度
$objPHPExcel->getActiveSheet ()->getColumnDimension ( 'B' )->setWidth ( '30' );
$objPHPExcel->getActiveSheet ()->getColumnDimension ( 'C' )->setWidth ( '30' );
$objPHPExcel->getActiveSheet ()->getColumnDimension ( 'D' )->setWidth ( '20' );

// Add some data
$objPHPExcel->setActiveSheetIndex ( 0 )
->setCellValue ( 'A1', '手機號碼' ) // 第一行A列值
->setCellValue ( 'B1', '姓名' ) // 第一行B列值
->setCellValue ( 'C1', '圖片' ) // 第一行C列值
->setCellValue ( 'D1', '提交時間' ); // 第一行D列值







// 今後開始行數可在循環中累加
$objPHPExcel->setActiveSheetIndex ( 0 )
->setCellValue ( 'A' . '2', ' ' . '12345678910' ) // 第二行A列值
->setCellValue ( 'B' . '2', ' ' . '用戶名' ); // 第二行B列值

/* 實例化插入圖片類 */
$objDrawing = new \PHPExcel_Worksheet_Drawing ();
/* 設置圖片路徑 切記:只能是本地圖片 */
$objDrawing->setPath ( './img/test.jpg' );
/* 設置圖片高度 */
$objDrawing->setHeight ( 100 );
/* 設置圖片要插入的單元格位置 */
$objDrawing->setCoordinates ( 'C' . '2' ); // 這裏第二行C列
// 寫入圖片在指定格中的X座標值
$objDrawing->setOffsetX ( 20 );
// 寫入圖片在指定格中的Y座標值
$objDrawing->setOffsetY ( 20 );
// 設置旋轉角度
// $objDrawing->setRotation(20);
$objDrawing->getShadow ()->setVisible ( true );
$objDrawing->getShadow ()->setDirection ( 50 );
$objDrawing->setWorksheet ( $objPHPExcel->getActiveSheet () );

// 設置單元格高度
$objPHPExcel->getActiveSheet ()->getRowDimension ( $key + 2 )->setRowHeight ( 100 );

$objPHPExcel->setActiveSheetIndex ( 0 )->setCellValue ( 'D' . '2', ' ' . '2017-08-24 16:01' ); // 第二行D列值
// 若是循環添加行,則此處循環終止








// Rename worksheet
$objPHPExcel->getActiveSheet ()->setTitle ( 'Simple' );

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex ( 0 );

// 重定向輸出到客戶端的Web瀏覽器 (Excel2007)
header ( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' );
header ( 'Content-Disposition: attachment;filename="測試文件名.xlsx"' );
header ( 'Cache-Control: max-age=0' );
// 若是是IE9瀏覽器,則須要下面這條
header ( 'Cache-Control: max-age=1' );

// 若是是帶SSL的IE,則可能用到下面這條
header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); // 過去的日期
header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); // 實時時間
header ( 'Cache-Control: cache, must-revalidate' ); // HTTP/1.1
header ( 'Pragma: public' ); // HTTP/1.0

$objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel2007' );
$objWriter->save ( 'php://output' );
相關文章
相關標籤/搜索