PHPspreadsheet: Как открыть файл в режиме чтения? - PullRequest
0 голосов
/ 13 января 2020

Я не хочу ставить пароль на файл или что-либо еще, все, что я хочу, это открыть файл в режиме чтения, и если пользователь хочет что-то редактировать, ему придется нажать на желтый баннер на верхняя часть с надписью «включить редактирование»

Я попробовал ответ отметки строка за строкой, не работал

$objPHPExcel->getSecurity()->setLockWindows(true);
$objPHPExcel->getSecurity()->setLockStructure(true);
$objPHPExcel->getSecurity()->setWorkbookPassword('secret');
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);

Эти параметры хороши, если кто-то хочет отключить редактирование навсегда, все, что я хочу сказать, это отображение предупреждения, стандартного предупреждения, которое вы видите при попытке редактировать файл Excel.

1 Ответ

0 голосов
/ 13 января 2020

Я решил это по ошибке, у меня нет объяснения, почему моя проблема была решена, я не планировал ее решать, я исправлял способ загрузки файла excel, и это решило проблему.

Раньше я открывал новую вкладку в Javascript, генерировал Excel и загружал его, мне это не понравилось, потому что, если файл пуст? Я хотел проверить, является ли файл пустым с javascript перед загрузкой файла.

Итак, я сделал это

        fetch(url)
            .then(resp => resp.blob())
            .then(file => {
                if (file.size > 0) {
                    const url = window.URL.createObjectURL(file);
                    const a = document.createElement('a');
                    a.style.display = 'none';
                    a.href = url;
                    a.download = 'filename.xlsx';
                    document.body.appendChild(a);
                    a.click();
                    window.URL.revokeObjectURL(url);
                } else {
                    $('#banner').html('<div class="alert alert-warning" role="alert">This provider does not seem to have any data during the selected dates, if you believe there is an issue, please contact the developers</div>');
                }
            })
            .catch(() => $('#banner').html('<div class="alert alert-warning" role="alert">This provider does not seem to have any data during the selected dates, if you believe there is an issue, please contact the developers</div>'));

Кажется, что получение файла с Javascript похоже и переименуйте его, а затем загрузите, по какой-то причине Excel откроет файл в защищенном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...