You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PhpSpreadsheet设置Excel文件打开密码,阻止无密码读取?

用PhpSpreadsheet设置Excel文件级打开密码

当然可以!PhpSpreadsheet完全支持为Excel文件设置文件级的打开密码——也就是用户打开文件时会弹出密码输入框,没有正确密码就无法读取内容,这和单元格/工作表的写入保护是完全不同的层级。

下面分两种常见的Excel格式给你具体实现方法:

1. 针对XLSX格式(Office Open XML)

对于现代的XLSX文件,你可以直接通过文档的安全设置来配置打开密码,代码示例如下:

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 创建新的表格实例
$spreadsheet = new Spreadsheet();
$activeSheet = $spreadsheet->getActiveSheet();
$activeSheet->setCellValue('A1', '这是受密码保护的私密内容');

// 配置文件级安全设置
$security = $spreadsheet->getSecurity();
$security->setPassword('YourSecurePassword123!'); // 替换为你的目标密码
$security->setLockWindows(true);
$security->setLockStructure(true);

// 保存加密后的文件
$writer = new Xlsx($spreadsheet);
$writer->save('protected_xlsx_file.xlsx');

// 清理内存
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

2. 针对XLS格式(旧版二进制Excel)

如果需要兼容旧版的XLS文件,需要通过对应的Writer实例来设置密码,代码示例如下:

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xls;

$spreadsheet = new Spreadsheet();
$activeSheet = $spreadsheet->getActiveSheet();
$activeSheet->setCellValue('A1', '旧版Excel加密内容');

// 创建XLS写入器并设置打开密码
$writer = new Xls($spreadsheet);
$writer->setPassword('YourOldXlsPassword!'); // 设置旧版文件的打开密码

// 保存加密文件
$writer->save('protected_xls_file.xls');

// 清理内存
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

额外注意事项

  • 建议设置复杂度足够的密码(混合大小写字母、数字、特殊字符),提升加密安全性;
  • 不同版本的Excel对加密算法的支持略有差异,建议在目标用户常用的Excel版本上测试兼容性;
  • 这种加密是文件级的内容加密,不是简单的界面限制,没有正确密码无法通过任何常规方式读取文件内容。

内容的提问来源于stack exchange,提问作者Oren Havshush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:40:45