PHPspreadsheet:如何以阅读模式打开文件?

PHPspreadsheet: How to to open a file in reading mode?

我不想在文件或任何东西上设置密码,我只想以阅读模式打开文件,如果用户想编辑任何东西,他必须点击黄色上面写着 "enable editing"

的横幅

我试过 mark's answer 一行一行,没用

$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 文件时看到的标准警告。

我错误地解决了这个问题,我没有解释为什么我的问题得到解决,我不打算解决它,我正在修复 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 在受保护的视图中打开文件。