Temu 插件导出 Excel 图片问题总结(SheetJS / ExcelJS)
文档用途:记录插件导出 Excel 无法插入图片、CDN 加载失败、最终可行方案全过程格式:
一、项目背景
插件名称:Temu Price Highlighter
功能:抓取 Temu 商品名称、价格、链接、图片地址,导出 Excel 文件
报错场景:导出图片失败、ExcelJS CDN 加载失败、只能拿到 Base64
二、核心问题与结论
1. SheetJS(社区免费版)为什么不能插入图片?
官方限制:SheetJS 社区版(免费)不支持图片、图表、形状插入
支持内容:文本、数字、样式、公式、单元格格式
不支持内容:图片插入(仅企业付费版支持)
表现:只能把图片 URL / Base64 当文本存入单元格,无法显示为图片
2. 为什么 ExcelJS CDN 加载失败?
ExcelJS 内部依赖 Web Worker
Chrome 插件安全策略(CSP)默认禁止
禁止远程 Worker
禁止动态脚本创建
SheetJS 无 Worker、无动态加载 → 可正常用 CDN
结论:Chrome 插件环境 = 无法使用 ExcelJS
3. 为什么只能获取 Base64,无法直接存图片?
浏览器插件跨域限制:无法直接拉取 Temu 图片并写入文件
CSV / XLSX 本质是文本格式,不能直接嵌入二进制图片
Base64 是文本形式,但 Excel 不会自动解析为图片
4. 你记忆正确点:Excel 明明能粘贴图片
能粘贴图片的是 Excel 软件(.xlsx)
你插件导出的是文本型表格,不是带图形对象的文件
SheetJS 不提供 "插入图片" API
三、最终可行方案(100% 稳定、插件安全、不被墙)
方案:导出图片 URL → Excel 内一键转图片
1. 插件端做法
继续使用 SheetJS
导出字段:
商品名称
价格
商品链接
图片 URL(不转 Base64)
不跨域、不下载、不触发安全限制
2. Excel 端一键显示图片(新版 Excel / WPS)
使用 Excel 内置函数 IMAGE()
excel
=IMAGE(图片链接单元格)
示例:
=IMAGE(D2)
缩放参数:
plaintext
=IMAGE(D2,1) 等比缩放(推荐)
=IMAGE(D2,2) 拉伸铺满
=IMAGE(D2,3) 原始尺寸
=IMAGE(D2,4) 自定义宽高
下拉填充 → 整列自动生成图片
3. 旧版 Excel 解决方案
使用在线工具:
搜索关键词:Excel URL 批量转图片
上传文件 → 选择 URL 列 → 下载带图 xlsx
四、插件代码规范(最终版)
1. 抓取商品图片(content.js)
js
// 获取图片
let imgUrl = '';
if (parentCard) {
const img = parentCard.querySelector('img');
if (img) imgUrl = img.src;
}
// 存入数据
productsData.push({
name: productName.trim(),
price: price,
url: productUrl,
imgUrl: imgUrl // 只存 URL,不转 Base64
});
2. 导出 Excel(popup.js)
js
function exportToExcel() {
if (!productsData.length) {
alert('无数据可导出');
return;
}
const data = productsData.map(item => ({
'商品名称': item.name || '',
'价格': item.price || '',
'商品链接': item.url || '',
'图片链接': item.imgUrl || ''
}));
const ws = XLSX.utils.json_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Temu商品');
XLSX.writeFile(wb, `Temu商品_${new Date().toLocaleDateString()}.xlsx`);
}
五、关键禁忌(不要再踩坑)
❌ 不要尝试在插件里用 ExcelJS
❌ 不要把图片转 Base64 导出(无意义、体积大)
❌ 不要试图跨域下载图片并插入 Excel
✅ 只导出 URL,交给 Excel 函数渲染最稳定、最安全
六、总结一句话
SheetJS 免费版不能插图片,ExcelJS 在插件里不能用,唯一正确路线:导出图片 URL + Excel IMAGE 函数。