Содержимое не может быть включено для файла .xlsm, созданного с помощью PhpExcel - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь загрузить и записать содержимое уже существующих шаблонов .xlsm и сохранить его как новый файл в другом каталоге. В этих файлах есть макросы, и эти макросы необходимо защищать, как в исходном файле. Я сделал следующие вещи в php, чтобы получить результат:

 <?php

    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);

    require_once dirname(__FILE__) . '/php_excel/Classes/PHPExcel.php';
    require_once dirname(__FILE__) . '/php_excel/Classes/PHPExcel/IOFactory.php';
    require_once dirname(__FILE__) . '/php_excel/Classes/PHPExcel/Reader/IReadFilter.php';
    date_default_timezone_set('Europe/London');

    $sheets = array('Welcome', 'Instructions', 'Data Definitions', 'Clothing');

    $inputFileName = __DIR__ . '/templates/Clothing.xlsm';

    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);

    $this->PHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType);
    $sheetnames = $sheets;
    $this->PHPExcelReader->setLoadSheetsOnly($sheetnames);
    $this->PHPExcel = $this->PHPExcelReader->load($inputFileName);


    $this->PHPExcel->setActiveSheetIndex(3);

    // Redirect output to a client’s web browser (Excel2007)
    ob_end_clean();
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="test.xlsm"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($this->PHPExcel, 'Excel2007');
    ob_end_clean();
    $objWriter->save($this->filename);

    $this->PHPExcel->disconnectWorksheets();
    unset($this->PHPExcel);

$ this-> имя файла доступно в моем классе.

Все отлично работает. Я получаю точно такой же контент, как и исходный файл, но при включении контента я получаю

Ошибка выполнения '9': Индекс вне диапазона.

Клонированный файл | Исходный файл

Я видел количество постов на github и wiki, но не нашел то, что мне было нужно. Это было немного, как близко , но он не получил ответа или просто сказал, что phpexcel не поддерживает файл xlsm. Если да, то какая библиотека лучше всего поддерживает xlsm и макросы? Я застрял в этом с 3 дней. Любые предложения и помощь действительно приветствуются.
Спасибо.

...