为什么我不能使用phpspreadsheet中的clone复制带有公式的工作表?

问题描述 投票:0回答:1

我正在使用phpspreadsheet复制一个工作表,而我正在使用克隆进行复制。问题是,如果工作表没有公式,则该过程将成功结束。但是,如果该工作表具有公式,则会出现以下错误:

致命错误:允许的536870912字节的内存容量用尽(尝试分配67108872字节)C:\ xampp \ htdocs \ OfferConfigurator \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Calculation \ Calculation.php在第4626行

这是我的代码:

$inputFileType = 'Xlsx';
$inputFileName = 'files/697D.xlsx';
$sheetnames = ['sheet0', 'sheet1', 'sheet2'];

/**  Create a new Reader of the type defined in $inputFileType  * */
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  Advise the Reader of which WorkSheets we want to load  * */
$reader->setLoadSheetsOnly($sheetnames);
/**  Load $inputFileName to a Spreadsheet Object  * */
$spreadsheet = $reader->load($inputFileName);

/**  Load xlsx file to copy the sheet * */
$spreadsheet1 = \PhpOffice\PhpSpreadsheet\IOFactory::load("files/697D.xlsx");
/**  Clone worksheet * */
    $clonedWorksheet = clone $spreadsheet1->getSheetByName('sheet4');
/**  Set title of cloned worksheet * */
    $clonedWorksheet->setTitle('sheet4');
/**  Add clone worksheet * */
    $spreadsheet->addExternalSheet($clonedWorksheet);

可能是克隆无法复制公式吗?

php excel phpexcel phpspreadsheet
1个回答
0
投票

最后我找到了解决方案。问题出在编写者和公式上,因此请将此行添加到代码中,现在它可以正常工作:

$writer->setPreCalculateFormulas(false);

所以编写者的所有代码现在是:

$writer = new Xlsx($spreadsheet);
$writer->setPreCalculateFormulas(false);
$writer->save('test.xlsx');
© www.soinside.com 2019 - 2024. All rights reserved.