Nodejs js-excel 怎样读取有密码的 xlsx 文件
Nodejs js-excel 怎样读取有密码的 xlsx 文件
运行环境: Chrome49
用 XLSX.read(data, {type:‘binary’}) 可以读未加密的 xlsx 文件
加上打开密码 “123” 后,读取出错
XLSX.read(data, {type:‘binary’, password:‘123’})
==错误信息==
Uncaught Error: Cannot find Workbook stream
parse_xlscfb @ xlsx.js:9828
readSync @ xlsx.js:11391
… …
谁遇到过类似的情况,麻烦给个提示,谢谢!
在 Node.js 中读取有密码保护的 .xlsx
文件,你可以使用 xlsx
库结合 node-unzipper
库(用于处理压缩文件)和 crypto
库(用于解密)。然而,xlsx
库本身并不直接支持读取带密码的文件,因此你需要手动处理文件解密。不过,可以使用 exceljs
库,它支持读取受密码保护的 Excel 文件。
以下是一个使用 exceljs
库的示例代码:
const ExcelJS = require('exceljs');
async function readProtectedExcel(filePath, password) {
const workbook = new ExcelJS.Workbook();
try {
await workbook.xlsx.readFile(filePath, { password });
const worksheet = workbook.getWorksheet(1);
const data = worksheet.getRows();
data.forEach(row => {
console.log(row.values);
});
} catch (error) {
console.error('Error reading file:', error);
}
}
// 使用示例
const filePath = 'path/to/your/protected.xlsx';
const password = 'your-password';
readProtectedExcel(filePath, password);
在这段代码中,ExcelJS.Workbook
创建一个新的工作簿对象,workbook.xlsx.readFile
方法读取受密码保护的 .xlsx
文件。如果密码正确,文件将被成功读取,你可以通过 workbook.getWorksheet
方法获取工作表,并使用 worksheet.getRows
方法获取行数据。
请确保你已经安装了 exceljs
库,可以通过运行 npm install exceljs
来安装。这个解决方案简单直接,避免了手动处理文件解压缩和加密的复杂性。