Есть ли проблема с таблицами чтения таблиц PHP от больших «оригинальных» XLSX-файлов? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь поместить данные в 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();
...