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