首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHPExcel 核心功能完全指南:從基礎操作到樣式設定

     編輯:PHP 綜合知識

PHPExcel 基礎架構與初始化

PHPExcel 是 PHP 操作 Excel 文件的經典庫,雖然已停止維護(現建議使用 PhpSpreadsheet),但許多專案仍在使用。本文整理其核心功能,幫助開發者快速上手。

建立 Excel 物件與文件屬性

首先引入核心類別並實例化 PHPExcel 物件,設定文件元數據:

// 載入 PHPExcel 核心類別
require_once dirname(__FILE__) . '/PHPExcel.php';

// 建立新的 Excel 物件
$objPHPExcel = new PHPExcel();

// 設定文件屬性
$objPHPExcel->getProperties()
    ->setCreator("Sam.c")
    ->setLastModifiedBy("Sam.c Test")
    ->setTitle("Microsoft Office Excel Document")
    ->setSubject("Test")
    ->setDescription("Test")
    ->setKeywords("Test")
    ->setCategory("Test result file");

工作表基本操作

啟用第一個工作表並設定名稱、預設字體:

// 選擇第一個工作表(索引 0)
$objPHPExcel->setActiveSheetIndex(0);

// 設定工作表標題(注意編碼轉換)
$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'phpexcel測試'));

// 設定預設字體與大小
$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '宋體'));
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);

文件輸出:Excel 與 PDF 格式

根據需求輸出不同格式,關鍵在於設定正確的 HTTP 標頭與 Writer 類別:

輸出 Excel 5 (xls) 格式

if ($m_exportType == "excel") {
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
    // 設定下載標頭
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\"{$filename}\"");
    header("Content-Transfer-Encoding: binary");
    
    $objWriter->save("php://output");
}

輸出 PDF 格式

if ($m_exportType == "pdf") {
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
    $objWriter->setSheetIndex(0);
    
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/pdf");
    header("Content-Disposition: attachment; filename=\"{$m_strOutputPdfFileName}\"");
    header("Content-Transfer-Encoding: binary");
    
    $objWriter->save("php://output");
}

常用儲存格操作速查

欄寬與列高設定

// 設定 A 欄寬度為 15
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);

// 設定第 6 列高度為 30
$objPHPExcel->getActiveSheet()->getRowDimension('6')->setRowHeight(30);

儲存格合併

// 合併 A1 到 P1
$objPHPExcel->getActiveSheet()->mergeCells('A1:P1');

樣式陣列套用:加粗、置中、字體大小

$styleArray = [
    'font' => [
        'bold' => true,
        'size' => 12,
        'color' => ['argb' => '00000000'],
    ],
    'alignment' => [
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    ],
];

$objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray);
// 單獨設定 B1 加粗
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);

寫入儲存格數值

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello Baby');

對齊方式:水平與垂直置中

$objPHPExcel->getActiveSheet()->getStyle('A1')
    ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A1')
    ->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

字體顏色與背景填滿

// 設定 H5 字體為黑色
$objPHPExcel->getActiveSheet()->getStyle('H5')
    ->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK);

// 設定 H5 背景為淺粉色
$objPHPExcel->getActiveSheet()->getStyle('H5')
    ->getFill()->getStartColor()->setARGB('00ff99cc');

數字格式化(保留三位小數)

$objPHPExcel->getActiveSheet()->getStyle('F' . $iLineNumber)
    ->getNumberFormat()->setFormatCode('0.000');

插入圖片到儲存格

$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath('test.jpg');
$objDrawing->setWidth(400);
$objDrawing->setHeight(123);
$objDrawing->setCoordinates('J1');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

設定超連結

$objPHPExcel->getActiveSheet()->setCellValue('H8', iconv('gbk', 'utf-8', '燕南天'));
$objPHPExcel->getActiveSheet()->getCell('H8')
    ->getHyperlink()->setUrl('https://www.jb51.net/');

邊框樣式:細線外框

$styleThinBorder = [
    'borders' => [
        'outline' => [
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => ['argb' => 'FF000000'],
        ],
    ],
];

$objPHPExcel->getActiveSheet()->getStyle('A4:E10')->applyFromArray($styleThinBorder);

新增工作表

$objExcel->createSheet();
$objActSheet = $objExcel->getSheet($s);
$objActSheet->setTitle('表' . $GSheet);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved