目录
效果演示
注意事项
核心代码
有需要将excel中的图片解析出来保存到本地的小伙子们看过来!!!
效果演示
注意事项
-
仅支持xlsx格式:此方法适用于Office 2007及以上版本的
.xlsx
文件,旧版.xls
格式无法使用。 -
图片名称:提取的图片名称可能为系统生成(如
image1.png
),但能确保完整提取。 -
位置信息:此方法不保留图片在Excel中的位置信息,仅提取原始图片文件。
如果以上这些问题你都能接受,那么就可以使用这个方法了。
核心代码
const JSZip = require('jszip');
const fs = require('fs');
const path = require('path');
async function extractImagesFromExcel(excelPath, outputDir) {
try {
// 读取Excel文件
const data = fs.readFileSync(excelPath);
const zip = await JSZip.loadAsync(data);
// 定位到xl/media目录
const mediaFolder = zip.folder('xl/media');
if (!mediaFolder) {
console.log('未找到图片。');
return;
}
// 创建输出目录
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
// 遍历并保存所有图片文件
const files = [];
mediaFolder.forEach((relativePath, file) => {
if (!file.dir) {
files.push({ relativePath, file });
}
});
for (const { relativePath, file } of files) {
const content = await file.async('nodebuffer');
const outputPath = path.join(outputDir, relativePath);
fs.writeFileSync(outputPath, content);
console.log(`图片已保存至:${outputPath}`);
}
console.log('所有图片提取完成!');
} catch (err) {
console.error('提取过程中发生错误:', err);
}
}
extractImagesFromExcel('./example.xlsx', './excel-images');