I'm using PhpSpreadsheet: https://github.com/PHPOffice/PhpSpreadsheet
In the documentation, it states:
An example on setting document security:
$security = $spreadsheet->getSecurity();
$security->setLockWindows(true);
$security->setLockStructure(true);
$security->setWorkbookPassword("PhpSpreadsheet");
https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#setting-security-on-a-spreadsheet
However, this doesn't work, and I'm not prompted to enter a password when opening the Excel spreadsheet that is generated.
My code:
<?php
require 'vendor/autoload.php';
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
$spreadsheet = new Spreadsheet();
$spreadsheet->getSecurity()->setLockWindows(true);
$spreadsheet->getSecurity()->setLockStructure(true);
$spreadsheet->getSecurity()->setWorkbookPassword("password123test");
$writer = new Xlsx($spreadsheet);
$writer->save('helloworld.xlsx');
Has anyone successfully been able to get this functionality working?
If this simply isn't possible (due to some fault in the library/PHP compatibility etc.) can anyone suggest a workaround for this (other than password protected ZIP files)?
Edit - I've worked around this by using msoffice-crypt (CLI tool):
https://github.com/herumi/msoffice
However, I'm curious as to dissect why the functionality appears broken in PhpSpreadsheet.
It'd be preferable to use a native PHP library if possible.
question from:
https://stackoverflow.com/questions/65904187/cannot-set-document-password-on-xlsx-with-phpspreadsheet 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…