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

求助:将含嵌套行的大型XLSX文件转换为指定结构JSON

我明白你现在的痛点——在线工具和基础的npm包都没法识别XLSX里的嵌套行逻辑,直接输出了扁平JSON,完全不符合你要的嵌套格式。别担心,咱们可以用更灵活的自定义解析方式来解决,下面是具体方案:

解决方案:自定义解析XLSX构建嵌套JSON

因为你的XLSX存在嵌套行结构(主物料条目下紧跟子物料Chemical_extract的信息),通用转换工具没法识别这种业务规则,所以需要手动编写解析逻辑。这里推荐用xlsx npm包(比xlsx-to-json更底层、更灵活)来实现。

步骤1:安装依赖

先安装核心处理包:

npm install xlsx

步骤2:编写自定义解析脚本

假设你的XLSX结构是「主物料行包含基础信息,紧接着的一行是子物料Chemical_extract的详情」(你需要根据自己实际的XLSX行列对应关系调整脚本里的字段映射!):

const XLSX = require('xlsx');

// 读取目标XLSX文件
const workbook = XLSX.readFile('./your-materials.xlsx');
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
// 把工作表转成原始JSON数组(扁平结构)
const rawFlatData = XLSX.utils.sheet_to_json(worksheet);

// 构建嵌套JSON的核心逻辑
const nestedResult = [];
let currentMainMaterial = null;

for (const row of rawFlatData) {
  // 判断当前行是主物料还是子物料(请根据你的XLSX规则调整判断条件)
  // 示例规则:主物料行包含HSCode字段,子物料行包含CASNo字段
  if (row['HS Code']) {
    // 初始化主物料对象,映射你需要的字段
    currentMainMaterial = {
      MaterialName: row['Material Name'],
      HSCode: row['HS Code'],
      DescriptionInArabic: row['Description In Arabic'],
      UsingInArabic: row['Using In Arabic'],
      SupplierName: row['Supplier Name'],
      BySea: row['By Sea'],
      ByAir: row['By Air'],
      Total: row['Total'],
      UOM: row['UOM'],
      Chemical_extract: null // 预留子物料位置
    };
    nestedResult.push(currentMainMaterial);
  } else if (row['CAS No'] && currentMainMaterial) {
    // 填充子物料信息到当前主物料的Chemical_extract字段
    currentMainMaterial.Chemical_extract = {
      MaterialName: row['Material Name'],
      'Name of material': row['اسم المادة'],
      UN: row['الرقم الدولي UN'],
      CASNo: row['CAS No'],
      percentage: row['النسبة المئوية']
    };
  }
}

// 输出最终嵌套JSON(也可以写入文件)
console.log(JSON.stringify(nestedResult, null, 2));

关键注意事项

  • 行识别规则:你必须根据自己XLSX的实际结构调整主/子行的判断条件(比如如果是合并单元格区分主行,就改成判断单元格合并属性;如果是固定间隔行,就用索引判断)。
  • 字段映射:脚本里的row['XXX']要和你XLSX里的表头完全匹配,同时要对应到你期望的JSON字段名(比如把Description In Arabic改成驼峰式的DescriptionInArabic)。
  • 多子物料扩展:如果一个主物料下有多个子物料,只需把Chemical_extract改成数组,在子行判断时用push添加即可。

测试与调整

运行脚本后,你会得到和你期望结构完全一致的嵌套JSON。如果出现格式问题,优先检查:

  1. XLSX表头是否和脚本里的键名完全匹配
  2. 主/子行的判断逻辑是否符合你的表格规则
  3. 字段类型是否正确(比如HSCode是数字,确保XLSX里该列是数字格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:38:58