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;
注意事项
- 性能问题:处理大量数据时,PHPExcel 可能占用较多内存。考虑使用
PHPExcel_CachedObjectStorageFactory
进行优化。 - 替代方案:推荐使用 PhpSpreadsheet,它是 PHPExcel 的官方继任者,修复了许多问题并提供更好的性能。
内存优化:
// 设置为只读模式以减少内存消耗 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load('large_file.xlsx');
如需更详细的文档,请参考 PHPExcel 官方文档(注意:项目已停止维护)。
评论 (0)