如何使用Node.js从Excel文件中提取图片?求适用类库
Node.js 从Excel单元格提取图片的实现方案
可用类库及实现示例
1. xlsx(SheetJS)
这是一款轻量化、应用广泛的Excel处理库,支持提取工作表中的图片数据。
安装依赖
npm install xlsx
提取代码
const XLSX = require('xlsx'); const fs = require('fs'); const path = require('path'); // 读取目标Excel文件 const workbook = XLSX.readFile('your-file.xlsx'); // 遍历所有工作表 workbook.SheetNames.forEach(sheetName => { const worksheet = workbook.Sheets[sheetName]; // 检查当前工作表是否包含图片 if (worksheet['!images']) { worksheet['!images'].forEach((img, index) => { // 解析图片格式 const ext = img.type.split('/')[1]; // 生成输出路径并保存图片 const outputPath = path.join(__dirname, `${sheetName}-img-${index}.${ext}`); fs.writeFileSync(outputPath, img.data); // 可选:输出图片所在单元格地址 const cellAddr = XLSX.utils.encode_cell(img.r.tl); console.log(`已提取图片:${outputPath},位于单元格${cellAddr}`); }); } });
2. exceljs
功能更全面的Excel处理库,API设计更直观,支持精准定位图片所在单元格。
安装依赖
npm install exceljs
提取代码
const ExcelJS = require('exceljs'); const fs = require('fs'); const path = require('path'); async function extractExcelImages() { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile('your-file.xlsx'); // 遍历每个工作表 for (const worksheet of workbook.worksheets) { // 遍历工作表内所有图片 worksheet.eachImage(img => { // 生成输出路径并保存图片 const outputPath = path.join(__dirname, `${worksheet.name}-img-${img.index}.${img.extension}`); fs.writeFileSync(outputPath, img.imageBuffer); // 转换为常规单元格地址(行号从1开始) const cellAddr = `${ExcelJS.utils.colToName(img.topLeft.col)}${img.topLeft.row + 1}`; console.log(`已提取图片:${outputPath},位于单元格${cellAddr}`); }); } } // 执行提取 extractExcelImages().catch(err => console.error('提取失败:', err));
注意事项
- 上述方案仅支持
.xlsx格式文件,.xls格式需额外处理 - 图片数据会被保存为本地文件,可根据需求调整存储逻辑
内容的提问来源于stack exchange,提问作者John Lerry Samson
相关产品推荐
相关产品推荐

