JSON导出Excel异常求助:仅表头填充,数据未导出
解决方案
1. 先预处理数据
你的原始JSON是分散的Result和Temp对象,没法直接按行导出,得先把数据整理成对应结构:
// 假设原始数据存在rawData数组里 // 提取所有Result值 const resultList = rawData.filter(item => item.Result !== undefined).map(item => item.Result); // 提取所有Temp值 const tempList = rawData.filter(item => item.Temp !== undefined).map(item => item.Temp); // 如果Result和Temp是按顺序一一对应的,合并成行对象数组(适配多数导出工具的要求) const formattedData = resultList.map((res, idx) => ({ Result: res, Temp: tempList[idx] }));
2. 调整导出逻辑(以SheetJS为例)
如果用SheetJS库,直接构造工作表数据就能按要求填充:
// 构造表头+数据的二维数组 const sheetData = [ ['Result', 'Temp'], // A1、B1表头 ...resultList.map((val, idx) => [val, tempList[idx]]) // 从A2、B2开始填充数据 ]; // 创建工作簿并导出 const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.aoa_to_sheet(sheetData); XLSX.utils.book_append_sheet(workbook, worksheet, 'DataSheet'); XLSX.writeFile(workbook, 'exported_data.xlsx');
3. 针对你提到的参数调整
如果用的是自定义的exportUsersToExcel方法:
- 把
orderInputArray设为['Result', 'Temp'],只保留需要的两列表头,去掉多余的C、D列定义 - 第一个参数传入上面的
formattedData(合并后的行对象数组),而不是原始的分散对象数组 - 若方法支持按列配置,直接传入
resultList和tempList,指定列起始行为2
排查要点
- 用
console.log(resultList.length)确认是否提取到320个Result值,避免过滤或映射逻辑出错 - 检查之前的表头配置,删掉多余的C、D列定义,只保留Result和Temp
- 确认导出方法是否支持二维数组(AOA)格式,若仅支持对象数组,必须用合并后的
formattedData
内容的提问来源于stack exchange,提问作者Charles4341
相关产品推荐
相关产品推荐

