Temu 插件导出 Excel 图片问题总结(SheetJS / ExcelJS)

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 函数。

相关推荐
Data-Miner5 小时前
用DeepSeek V4做表:数以轻舟Agent让做Excel表像聊天一样简单
microsoft·excel
Eiceblue1 天前
使用 C# 将 Excel 转换为 Markdown 表格(含批量转换示例)
开发语言·c#·excel
Java面试题总结1 天前
使用 Python 设置 Excel 数据验证
开发语言·python·excel
追逐梦想永不停1 天前
记录一个好用的excel判断数字格式的公式
前端·chrome·excel
Eiceblue1 天前
C# 如何实现 Word 转 Excel ?分享两种实用方法
c#·word·excel
CircleMouse2 天前
如何设置wps单元格下拉选项设置
excel·wps
zhangjin12222 天前
kettle插件-excel插件,kettle读取excel动态表头,kettle根据列名读取excel
excel·kettle·kettle excel插件·kettle 动态excel
远洪3 天前
excel 找出两列不同的数据
excel
pcplayer3 天前
非常好用的 Excel 读写控件
excel·delphi·office