exceljs读取excel文件中的图片
时间: 2025-04-02 16:00:22 浏览: 48
### 使用 ExcelJS 库读取 Excel 文件中的图片
`ExcelJS` 是一个功能强大的 Node.js 和浏览器兼容的库,用于创建、修改和操作 Excel 文件。然而,在当前版本中,`ExcelJS` 并不直接支持从 Excel 文件中提取嵌入式图片的功能[^3]。
尽管如此,可以通过一些间接的方法来实现这一目标:
#### 1. **加载 Excel 文件**
首先,需要通过 `ExcelJS` 加载 Excel 文件并访问其工作表内容。
```javascript
const ExcelJS = require('exceljs');
async function loadWorkbook(filePath) {
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile(filePath);
return workbook;
}
```
#### 2. **查找包含图片的工作表**
虽然无法直接获取图片数据,但可以遍历工作表以找到可能包含图片的对象。
```javascript
function findImagesInSheet(worksheet) {
const images = worksheet.images || [];
if (images.length === 0) {
console.log("No images found in this sheet.");
}
return images.map(image => ({
id: image.id,
name: image.name,
altText: image.altText
}));
}
```
#### 3. **保存或处理图片**
如果确认存在图片,则可通过其他工具(如第三方插件或手动解析 XML 结构)进一步提取这些图片的实际二进制数据。以下是伪代码示例:
```javascript
async function extractImageFromSheet(workbook, sheetName) {
const targetSheet = workbook.getWorksheet(sheetName);
if (!targetSheet) throw new Error(`Sheet "${sheetName}" not found!`);
const imagesData = findImagesInSheet(targetSheet);
// 假设我们已经找到了一张图片,并希望将其转换为 Base64 编码字符串
const firstImageId = imagesData[0]?.id;
if (firstImageId !== undefined && typeof firstImageId === 'number') {
const imageDataBuffer = workbook.getImage(firstImageId).buffer; // Hypothetical method call
const base64String = Buffer.from(imageDataBuffer).toString('base64');
console.log(base64String.slice(0, 50)); // 输出部分 Base64 字符串作为验证
} else {
console.warn("No valid image ID detected!");
}
}
loadWorkbook('./example-with-images.xlsx')
.then(wb => extractImageFromSheet(wb, 'Sheet1'))
.catch(err => console.error(err));
```
需要注意的是,上述代码片段假设了某些尚未公开的支持函数(例如 `workbook.getImage()`),因为目前官方文档并未提供明确接口来完成此任务。
#### 替代方案
对于更复杂的场景,考虑采用以下替代方式之一:
- 将原始 `.xlsx` 转换为解压后的文件夹结构,从中单独检索 `_rels/drawings/_` 下存储的具体图像资源;
- 或者利用 Python 的 Pandas 及 OpenPyXL 组合脚本来辅助完成相同需求[^1]。
---
###
阅读全文
相关推荐


















