PHP

【PHP】PHPExcel 使用手册

小破孩
2025-05-13 / 0 评论 / 14 阅读 / 正在检测是否收录...

PHPExcel 是一个用于操作 Microsoft Excel 格式文件的 PHP 库,它支持读取和写入多种格式(如 .xls, .xlsx, .csv 等)。不过需要注意,PHPExcel 项目已停止维护,推荐使用其继任者 PhpSpreadsheet。以下是 PHPExcel 的基本使用指南:

1. 安装 PHPExcel

# 使用 Composer 安装(推荐)
composer require phpoffice/phpexcel

2. 读取 Excel 文件

require 'vendor/autoload.php';

use PHPExcel_IOFactory;

// 读取文件
$inputFileName = 'example.xlsx';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

// 获取第一个工作表
$sheet = $objPHPExcel->getActiveSheet();

// 获取最高行和最高列
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

// 遍历数据
for ($row = 1; $row <= $highestRow; $row++) {
    for ($col = 'A'; $col <= $highestColumn; $col++) {
        $cellValue = $sheet->getCell($col.$row)->getValue();
        echo "Row $row, Column $col: $cellValue\n";
    }
}

3. 创建新的 Excel 文件

require 'vendor/autoload.php';

use PHPExcel;
use PHPExcel_IOFactory;

// 创建新的 PHPExcel 对象
$objPHPExcel = new PHPExcel();

// 设置文档属性
$objPHPExcel->getProperties()
    ->setCreator("Your Name")
    ->setTitle("Sample Excel File");

// 获取活动工作表
$sheet = $objPHPExcel->getActiveSheet();

// 设置单元格值
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B1', 'World!');
$sheet->setCellValue('A2', 'This is a sample spreadsheet.');

// 保存为 .xlsx 文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('new_file.xlsx');

4. 设置样式

// 设置字体样式
$sheet->getStyle('A1')->getFont()
    ->setName('Arial')
    ->setSize(14)
    ->setBold(true)
    ->setColor(new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED));

// 设置单元格背景色
$sheet->getStyle('A1')->getFill()
    ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFEEEEEE');

// 设置对齐方式
$sheet->getStyle('A1')->getAlignment()
    ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER)
    ->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

// 设置列宽
$sheet->getColumnDimension('A')->setWidth(20);

5. 合并单元格

// 合并 A1 到 B1 的单元格
$sheet->mergeCells('A1:B1');

// 取消合并
$sheet->unmergeCells('A1:B1');

6. 处理日期格式

// 设置日期值(PHPExcel 使用 Excel 时间戳格式)
$dateTime = new DateTime();
$sheet->setCellValue('A1', $dateTime->format('Y-m-d H:i:s'));

// 设置单元格格式为日期
$sheet->getStyle('A1')->getNumberFormat()
    ->setFormatCode('yyyy-mm-dd hh:mm:ss');

7. 保存为不同格式

// 保存为 .xlsx 格式
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('file.xlsx');

// 保存为 .xls 格式
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('file.xls');

// 保存为 CSV 格式
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save('file.csv');

8. 从浏览器下载文件

// 设置响应头
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="download.xlsx"');
header('Cache-Control: max-age=0');

// 输出到浏览器
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

注意事项

  1. 性能问题:处理大量数据时,PHPExcel 可能占用较多内存。考虑使用 PHPExcel_CachedObjectStorageFactory 进行优化。
  2. 替代方案:推荐使用 PhpSpreadsheet,它是 PHPExcel 的官方继任者,修复了许多问题并提供更好的性能。
  3. 内存优化

    // 设置为只读模式以减少内存消耗
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);
    $objPHPExcel = $objReader->load('large_file.xlsx');

如需更详细的文档,请参考 PHPExcel 官方文档(注意:项目已停止维护)。

0

评论 (0)

取消