Я пытаюсь поместить данные в XLSX-файлы, которые были созданы в Excel2019 и содержат огромное количество данных (60 МБ, 7 миллионов ячеек, 5 из них заполнены) и содержат около 10 диаграмм. Скрипт, который я представляю ниже, показывает только 6 прочитанных графиков, а письменная копия больше не содержит графики. Вы можете помочь мне?
<?php
ini_set('memory_limit', '8192M');
use PhpOffice\PhpSpreadsheet\IOFactory;
require __DIR__ . '/../Header.php';
$inputFileType = 'Xlsx';
$inputFileNames = 'C:\Temp\ahk\Clip\in\test*.xlsx';
$inputFileNames = glob($inputFileNames);
foreach ($inputFileNames as $inputFileName) {
$inputFileNameShort = basename($inputFileName);
if (!file_exists($inputFileName)) {
$helper->log('File ' . $inputFileNameShort . ' does not exist');
continue;
}
echo '$inputFileName = ' . $inputFileName . "\n\n\n";
// read one XLSX
$reader = IOFactory::createReader($inputFileType);
$reader->setIncludeCharts(true);
$spreadsheet = $reader->load($inputFileName);
// show names of the contained charts
$sheetNames = $spreadsheet->getSheetNames();
var_dump($sheetNames);
foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
$chartNames = $worksheet->getChartNames();
var_dump($chartNames);
}
// write one XLSX
$outputFileName = $helper->getFilename($inputFileName);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setPreCalculateFormulas(false);
$writer->setIncludeCharts(true);
$writer->save($outputFileName);
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
}
exit();