<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); require_once __DIR__ . '/PhpSpreadsheet-1.19.0/vendor/autoload.php'; // 本次演示使用1.19.0版本 use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Excel文件路径 $filename = __DIR__ . '/test.xlsx'; // 新增行数据 $add = [ ['name' => '张三', 'gender' => '男', 'birth' => '2003'], ['name' => '李四', 'gender' => '女', 'birth' => '2004'], ['name' => '王五', 'gender' => '男', 'birth' => '2005'], ]; // 载入Excel文件 $spreadsheet = IOFactory::load($filename); // 激活第1个Sheet try { $spreadsheet->setActiveSheetIndex(0); // Sheet编号从0开始 } catch (\PhpOffice\PhpSpreadsheet\Exception $e) { exit('激活Sheet失败:' . $e->getMessage()); } // 获取当前激活的Sheet $activeSheet = $spreadsheet->getActiveSheet(); // 获取最高行号 $row = $activeSheet->getHighestRow(); /** * 设置单元格内容左对齐 * * @param Worksheet $sheet 目标Sheet * @param string $pCellCoordinate 单元格坐标,示例:A1、B1、C1 * @return void */ function set_horizontal_left(Worksheet $sheet, string $pCellCoordinate): void { $sheet->getStyle($pCellCoordinate)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); } // 插入新数据 foreach ($add as $data) { $row++; // 先移到下一行 $activeSheet->setCellValue("A$row", $data['name']); set_horizontal_left($activeSheet, "A$row"); // 设置单元格内容左对齐 $activeSheet->setCellValue("B$row", $data['gender']); set_horizontal_left($activeSheet, "B$row"); // 设置单元格内容左对齐 $activeSheet->setCellValue("C$row", $data['birth']); set_horizontal_left($activeSheet, "C$row"); // 设置单元格内容左对齐 } // 创建Writer对象保存Excel文件 $writer = new Xlsx($spreadsheet); try { $writer->save($filename); } catch (\PhpOffice\PhpSpreadsheet\Writer\Exception $e) { exit("保存Excel文件[$filename]失败:" . $e->getMessage()); } // 保存Excel文件后其内容如下: // -------------------------------------------------- // 姓名 性别 出生年份 // 刘一 男 2001 [原有数据] // 陈二 女 2002 [原有数据] // 张三 男 2003 [新增数据] // 李四 女 2004 [新增数据] // 王五 男 2005 [新增数据]
Copyright © 2024 码农人生. All Rights Reserved