【问题标题】:How to generate a password protected spreadsheet from PHP?如何从 PHP 生成受密码保护的电子表格?
【发布时间】:2026-02-14 21:50:01
【问题描述】:

如何从 PHP 生成受密码保护的电子表格?

我尝试了http://phpexcel.codeplex.com/的PHPExcel库

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

文档安全性允许您在完整的电子表格上设置密码,只有在输入密码后才能进行更改。但用户无需密码即可打开电子表格并查看内容。

我也尝试了 Spreadsheet_Excel_Writer,但没有找到任何解决方案。 Spreadsheet_Excel_Writer 仅提供工作表级别的安全性,不提供文件保护。

有谁知道任何其他提供文件保护的 PHP Excel 编写器,用户甚至无法在没有密码的情况下打开 Excel 文件?

【问题讨论】:

  • 你为什么不只是保护文件的下载,换句话说,如果你不希望用户打开它,他为什么能够首先下载它?
  • 是否以“密码”模板开头,或者您需要更改密码的能力?
  • 感谢您的回复布拉德克里斯蒂。实际上,我想创建一个 PHP 应用程序,它能够生成一些 excel 报告并将这些报告发送到某个公共路径。这些报告仅对某些人开放。所以我需要通过提供一些密码安全性来保护这些电子表格,并防止其他用户打开它。
  • 如果 PHPExcel 和 Pear Excel 库不这样做,我非常怀疑您是否可以使用另一个库来做到这一点。另一个想法是使用 PHP 库的密码存档(ZIP、RAR...)电子表格。使用最新的安全选项,因为早期的安全选项确实很弱。

标签: php phpexcel


【解决方案1】:

您可以先使用 PHP 创建电子表格,然后使用节点命令行工具 secure-spreadsheet 进行密码保护,它需要 csv 或 xlsx 并输出加密的 xlsx 文件。

$infilepath = 'workbook.xlsx';
$outfilepath = 'workbook-encrypted.xlsx';
$encryptionPassword 'password';

$encryptCommand = "cat $infilepath | /usr/local/bin/secure-spreadsheet --password $encryptionPassword --input-format xlsx > $outfilepath ";

exec($encryptCommand);

【讨论】:

  • 它不是工作文件。继续显示错误消息:“没有这样的文件或目录”
  • 你要么没有安装安全电子表格,要么你的 $infilepath 没有指向一个实际的文件
【解决方案2】:

完整的工作簿保护需要对工作簿数据进行加密,而用于此的加密算法是我在任何可用文档中都没有看到的 Excel 格式的一个方面。当然,没有一个 PHP Excel 编写器库支持这一点:我知道的唯一方法(在工作簿本身内)是使用 COM 扩展来构建您的工作簿。

【讨论】: