Node.js 有没有办法在NodeJS中生成受密码保护的XLSX?

Node.js 有没有办法在NodeJS中生成受密码保护的XLSX?,node.js,passwords,xlsx,Node.js,Passwords,Xlsx,我正在寻找一个npm软件包或任何其他解决办法,能够生成xlsx文件的密码。我不想保护工作表或单元格。。。我希望整个文件都有密码保护。 我发现很少有非常好的软件包(excel4node、exceljs…),但没有一个能满足我的需要 任何建议您可以使用该模块执行此操作,例如: const XlsxPopulate = require('xlsx-populate'); XlsxPopulate.fromBlankAsync().then(workbook => { workbook.

我正在寻找一个npm软件包或任何其他解决办法,能够生成xlsx文件的密码。我不想保护工作表或单元格。。。我希望整个文件都有密码保护。 我发现很少有非常好的软件包(excel4node、exceljs…),但没有一个能满足我的需要

任何建议

您可以使用该模块执行此操作,例如:

const XlsxPopulate = require('xlsx-populate');

XlsxPopulate.fromBlankAsync().then(workbook => {
    workbook.sheet("Sheet1").cell("A1").value("Some sample text");
    return workbook.toFileAsync("./test.xlsx", { password: "$secret_password" });
});

如果用户希望访问工作簿,则生成的工作簿将要求用户输入正确的密码。

您可以使用exceljs软件包,它提供了创建受写保护的excel的方法,但不提供受密码保护的excel工作表

await worksheet.protect('the-password', options);
参考:

但是,如果您想创建一个受密码保护的excel工作表,那么您可以使用xlsx填充包

支持XLSX敏捷加密和解密,因此您可以阅读和编写受密码保护的工作簿。要读取受保护的工作簿,请将密码作为选项传入:

XlsxPopulate.fromFileAsync("./Book1.xlsx", { password: "S3cret!" })
.then(workbook => {
    // ...
});
同样,要编写密码加密工作簿,请执行以下操作:

workbook.toFileAsync("./out.xlsx", { password: "S3cret!" });

参考资料:

如果您不一定要使用xlsx格式,我建议您使用CSV文件。使用json/js本机对象更容易读写。我在我的nest项目中使用exceljs在我的服务层中创建一个worbook,然后用rest api下载它,实际上我在controller中使用wb.xlsx.write(response),但现在我需要用密码保护该文件。可以将exceljs与xlsx populate结合起来进行此操作?您应该能够将您在exceljs中创建的xlsx文件加载到xlsx populate中,然后添加密码。我在类中的“xlsx populate/lib/Encryptor”中使用import*作为加密程序解决了此问题(因为xlsx populate没有@types),然后使用Encryptor.encrypt进行加密(等待wb.xlsx.writeBuffer(),密码),其中wb是使用exceljs创建的工作簿。