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

PHPExcel 與 phpqrcode 核心用法詳解:從 Excel 匯出到二維碼生成

     編輯:PHP 相關知識

前言

在 PHP 開發中,資料匯出與二維碼生成是常見需求。本文整理 PHPExcel(現已併入 PhpSpreadsheet)與 phpqrcode 的核心參數與實戰範例,幫助開發者快速上手。

一、PHPExcel 基礎操作

1. 環境引入與實例化

<?php
require_once 'PHPExcel.php';
require_once 'PHPExcel/Writer/Excel2007.php'; // .xlsx 格式
// require_once 'PHPExcel/Writer/Excel5.php';   // .xls 格式

$objPHPExcel = new PHPExcel();

2. 儲存檔案與瀏覽器直接下載

儲存至伺服器:

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save("report.xlsx");

直接輸出下載:

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="report.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

3. 文件屬性設定

$props = $objPHPExcel->getProperties();
$props->setCreator("Author Name");
$props->setLastModifiedBy("Author Name");
$props->setTitle("Report Title");
$props->setSubject("Report Subject");
$props->setDescription("Description");
$props->setKeywords("keyword1, keyword2");
$props->setCategory("Category");

4. 工作表與儲存格操作

$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
$sheet->setTitle('DataSheet');

// 設定儲存格值
$sheet->setCellValue('A1', 'String');
$sheet->setCellValue('A2', 123);
$sheet->setCellValue('A3', true);
$sheet->setCellValue('C5', '=SUM(C2:C4)'); // 公式

// 合併/拆分儲存格
$sheet->mergeCells('A1:E1');
$sheet->unmergeCells('A3:B3');

5. 樣式進階:字型、對齊、邊框、填滿

$style = $sheet->getStyle('A1:E1');
// 字型
$style->getFont()->setName('Microsoft JhengHei');
$style->getFont()->setSize(14);
$style->getFont()->setBold(true);
$style->getFont()->getColor()->setARGB('FFFFFFFF');
// 對齊
$style->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$style->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 邊框
$style->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
// 填滿顏色
$style->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$style->getFill()->getStartColor()->setARGB('FF4472C4');

6. 欄寬自動調整與圖片插入

$sheet->getColumnDimension('A')->setAutoSize(true);
$sheet->getColumnDimension('B')->setWidth(20);

$drawing = new PHPExcel_Worksheet_Drawing();
$drawing->setName('Logo');
$drawing->setPath('./images/logo.png');
$drawing->setHeight(50);
$drawing->setWorksheet($sheet);

7. 中文編碼處理與資料庫匯出範例

function toUtf8($str) {
    return empty($str) ? '' : iconv('GBK', 'UTF-8', $str);
}

// 假設 $rows 為從資料庫查詢的二維陣列
foreach ($rows as $i => $row) {
    $line = $i + 2; // 第 1 列為標題
    $sheet->setCellValue('A' . $line, toUtf8($row['name']));
    $sheet->setCellValue('B' . $line, toUtf8($row['email']));
    // ... 其他欄位
}

8. 多工作表建立

$objPHPExcel->createSheet(); // 新增第二個工作表
$objPHPExcel->setActiveSheetIndex(1);
$sheet2 = $objPHPExcel->getActiveSheet();
$sheet2->setTitle('Sheet2');

二、phpqrcode 參數速查

phpqrcode 是輕量級 QR Code 生成庫,核心函式 QRcode::png() 參數如下:

參數說明預設值
$text編碼內容(字串)必填
$outfile輸出檔案路徑;false 直接輸出瀏覽器false
$level容錯等級:L(7%)、M(15%)、Q(25%)、H(30%)L
$size單模組像素大小3
$margin靜區寬度(模組數)4
$saveandprint是否儲存並顯示false

使用範例

require_once 'phpqrcode/qrlib.php';

// 直接輸出
QRcode::png('https://example.com', false, 'M', 5, 2);

// 儲存檔案
QRcode::png('WiFi:T:WPA;S:MySSID;P:password;;', 'wifi.png', 'H', 8, 4);

三、常見坑點提醒

  • 記憶體耗盡:大量資料匯出時,建議分批寫入或使用 PhpSpreadsheet 的 CellCaching 機制。
  • 中文亂碼:確保資料庫連線、PHP 檔案編碼、iconv 轉碼三者一致(皆為 UTF-8)。
  • 公式計算:PHPExcel 僅寫入公式字串,開啟 Excel 時才會計算;若需程式端取得計算結果,需呼叫 $writer->setPreCalculateFormulas(true)。
  • 版本維護:PHPExcel 官方已停止維護,新專案建議直接使用 PhpSpreadsheet,API 高度相容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved