Nodejs js-excel 怎样读取有密码的 xlsx 文件

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

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
… …

谁遇到过类似的情况,麻烦给个提示,谢谢!


1 回复

在 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 来安装。这个解决方案简单直接,避免了手动处理文件解压缩和加密的复杂性。

回到顶部