Password-protected XLSX
The Render extension now lets you create encrypted XLSX files that ask for a password when opened in Excel or other compatible apps. It works in the browser or on Node.js, and you don't need any extra dependencies.
Published at 16/04/2026
Introducing
Render is a Jspreadsheet extension that turns spreadsheet JSON into native XLSX files. With the new password option, you can encrypt your exported workbook using Agile Encryption, which is the same method Excel uses by default.
The output uses a standard format, so Excel, LibreOffice Calc, Numbers, and other XLSX-compatible apps will recognize it and ask for the password before opening. You don't need extra libraries—encryption uses WebCrypto in the browser and Node's built-in crypto module on the server.
What's new?
You only need to add one new option to the render call to encrypt your output.
The password option
Just pass a password when you call jspreadsheet.render(...), and your output file will be encrypted. Excel, Excel Online, LibreOffice, and other viewers will all prompt for the password before opening the file.
jspreadsheet.render(spreadsheet, {
filename: 'confidential.xlsx',
password: 'mypassword',
});
Standards-compliant Agile Encryption
The implementation follows [MS-OFFCRYPTO] §2.3.4 (Agile Encryption):
- Cipher: AES-256 in CBC mode
- Hash: SHA-512
- Spin count: 100,000 password-derivation iterations
- Integrity: HMAC-SHA-512 over the encrypted package
This uses the same encryption as Excel's 'Protect Workbook' feature, so files from Render will open in any tool that supports Excel's encrypted files.
Works everywhere
You can use this feature both in the browser and on the server:
- Browser - uses the built-in WebCrypto API, so you don't need polyfills or extra crypto libraries.
- Node.js - uses the native
cryptomodule for full server-side generation, which is great for backend export pipelines.