InsertRowBefore 不会更新命名单元格引用

作者: William-IRM创建于 2026年2月9日更新于 2026年2月11日

在将 *非常旧* 的内部工具从 PHPExcel 迁移到 PhpSpreadsheet 时,我惊讶地发现,虽然旧的 PHPExcel 在插入/删除行/列时正确地更新了命名单元格引用,但 PhpSpreadsheet 似乎并没有这样做。 我还发现,由于性能考虑,跨工作表的引用也不会自动更新。 我是否可以提出解决方案? 在各种插入/删除函数中添加一个额外的(可选的?) 参数,以允许用户定义要检查和更新的内容。 我想用一系列常量,使用标准的二进制运算符进行组合,以便根据需要进行操作: - PHPSPREADSHEET_UPDATE_NONE: 对于那些知道没有引用并希望快速插入/删除的用户。 适用于克隆样式。 - PHPSPREADSHEET_UPDATE_SAME_SHEET: 与当前行为相同。 - PHPSPREADSHEET_UPDATE_OTHER_SHEETS: 仅在其他工作表中更新引用。 可能不适用于单独使用,但你永远不知道。 - PHPSPREADSHEET_UPDATE_NAMED_REFERENCES: 仅在工作表中更新命名单元格/范围。 - PHPSPREADSHEET_UPDATE_ALL: 同一工作表、其他工作表和命名引用的组合。

内容来源: PHPOffice/PhpSpreadsheet