我是第一次使用PhpSpreadsheet,并且一直工作得很好。但是今天我需要制作一个文件,其中模板复制到几张纸(超过 300 张纸(。查看了文档,它使用克隆方法。但是,在执行时,代码不会给出错误或异常。只是继续"等待本地主机",然后突然停止。我已经增加了set_time_limit甚至内存限制,但它仍然无法工作。
法典
$File= IOFactory::createReader("Xlsx"); $Excel = $File->load('original.xlsx'); $clonedSheet = clone $Excel->getActiveSheet(); for($i = 0; $i <= 10; $i++) { $clonedSheet->setTitle('Simple Clone'.$i); $Excel->addSheet($clonedSheet); } $writer = IOFactory::createWriter($Excel, "Xlsx"); $filename = "omitidos.xlsx"; $writer->save("output/".$filename );
我尝试采用 for 循环,即使没有它,它也一样。
可能是 PHP7 的问题吗?
欢迎任何帮助。
我现在的"解决方案":
在 PHPSpreadSheet\Worksheet\Worksheet.php 文件转到__clone功能将其替换为此:
public function __clone()
{
foreach ($this as $key => $val) {
if (is_object($val) || (is_array($val))) {
$this->{$key} = unserialize(serialize($val));
}
}
这不是一个完美的解决方案,但它可以完成工作,至少对我来说是这样。