在drupal8自定义模块中,创建Excel文件,连接数据并用密码锁定文件



我想用密码创建excel文件。

$library = libraries_load('PHPExcel');
$objPHPExcel = new PHPExcel();
$objPHPExcel = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objPHPExcel->load('sample.xlsx');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello World');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('sample.xlsx');

文件现在创建了,我想把密码放在"sample.xlsx"文件中

我尝试了以下代码。

$objPHPExcel->getActiveSheet()->getSecurity()->setWorkbookPassword("password");

但不起作用,感谢您的帮助。

以下代码在drupal 8.7.7 中进行测试

use PhpOfficePhpSpreadsheetIOFactory;
use PhpOfficePhpSpreadsheetSpreadsheet;    
$library = libraries_load('PHPExcel');
$objPHPExcel = new PHPExcel();
$objPHPExcel = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objPHPExcel->load('sample.xlsx');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B1', 'World');

Excel提供3个级别的"保护":工作表安全性、文档安全性和单元格安全性。

工作表安全提供了其他安全选项:您可以禁止在特定工作表上插入行,禁止排序,

设置工作表安全的示例:

$objPHPExcel->getActiveSheet()->getProtection()
->setSheet(true) //use to enable worksheet protection
->setSort(true)
->setInsertRows(true)
->setFormatCells(true)
->setPassword('simple');

文档安全允许您在完整的电子表格上设置密码,只允许在输入密码时进行更改。

设置文档安全的示例:

$objPHPExcel->getSecurity()
->setLockWindows(true)
->setLockStructure(true)
->setWorkbookPassword("simple");

单元格安全提供锁定/解锁单元格以及显示/隐藏内部公式的选项。

设置蜂窝安全的示例:

$objPHPExcel->getActiveSheet()
->getStyle('B1')
->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

保护活动工作表后保存文件。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('sample.xlsx');