You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中使用SheetJS导出Excel时如何展示嵌套对象属性值

解决SheetJS生成XLSX时嵌套对象字段为空的问题

SheetJS的json_to_sheet方法默认仅支持解析扁平JSON对象,遇到category这种嵌套对象时,无法自动读取其内部的name属性,因此会导致对应列内容为空。可以通过以下两种方法解决:

方法一:预处理数据为扁平结构

遍历原始数据数组,将嵌套的category.name提取为独立的扁平字段,再传给json_to_sheet:

// 预处理模型数据,提取嵌套属性
const processedModels = filteredModels.map(model => ({
  id: model.id,
  name: model.name,
  category: model.category.name // 直接映射嵌套属性值
}));

// 生成工作簿和工作表
const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.json_to_sheet(processedModels);
XLSX.utils.book_append_sheet(workbook, worksheet, 'Ingredients');
XLSX.writeFile(workbook, 'Ingredients.xlsx', { compression: true });

方法二:手动构建二维数组(AOA)

如果需要更灵活的表头或数据控制,可以将数据转换为二维数组(Array of Arrays),再用aoa_to_sheet生成工作表:

// 定义表头
const headers = ['id', 'name', 'category'];
// 转换模型为数据行
const dataRows = filteredModels.map(model => [
  model.id,
  model.name,
  model.category.name
]);
// 合并表头与数据行
const aoaData = [headers, ...dataRows];

// 生成工作簿和工作表
const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.aoa_to_sheet(aoaData);
XLSX.utils.book_append_sheet(workbook, worksheet, 'Ingredients');
XLSX.writeFile(workbook, 'Ingredients.xlsx', { compression: true });

两种方法都能让XLSX表格的category列正确显示对应分类名称,其中方法一更简洁,适合简单嵌套场景;方法二更灵活,适合复杂表头或多嵌套层级的情况。

内容的提问来源于stack exchange,提问作者Danny Jebb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:22:38