当前位置: 首页 > news >正文

如何利用exceljs将data数据导出表格实现日期去重,同时保留对应日期的每一列数据

const data = [{ deviceId: 1, name: "B相电压", signalTypeId: 1, ts: "2024-05-13 12:10:06", unit: "kV", 1: 39.37936, value:39.37936, },{ deviceId: 1, name: "A相电压", signalTypeId: 2, ts: "2024-05-13 12:11:06", unit: "kV", 1: 39.37936, value:39.37936, },{ deviceId: 1, name: "A相电压", signalTypeId: 2, ts: "2024-05-13 12:11:06", unit: "kV", 2: 39.37936, value:39.37936, },{ deviceId: 1, name: "A相电压", signalTypeId: 3, ts: "2024-05-13 12:12:06", unit: "kV", 3: 39.37936, value:39.37936, },] sheet1.columns = [ { header: '日期', key: 'ts', width: 10 }, { header: "A相", key: '1', width: 32 }, { header: 'B相', key: '2', width: 10 }, { header: 'B相', key: '3', width: 10 } ];

columns中的key值是data对象中的1:39.37936中的key,如何利用exceljs将data数据导出表格实现日期去重,同时保留对应日期的每一列数据

为了实现日期去重并保留对应日期的每一列数据,你可以使用一个对象来存储每个日期的数据,然后将该对象中的数据填充到工作表中。以下是修改后的示例代码:

const ExcelJS = require('exceljs');// 示例数据
const data = [{deviceId: 1,name: "B相电压",signalTypeId: 1,ts: "2024-05-13 12:10:06",unit: "kV",1: 39.37936,value: 39.37936,
}, {deviceId: 1,name: "A相电压",signalTypeId: 2,ts: "2024-05-13 12:11:06",unit: "kV",1: 39.37936,value: 39.37936,
}, {deviceId: 1,name: "A相电压",signalTypeId: 2,ts: "2024-05-13 12:11:06",unit: "kV",2: 39.37936,value: 39.37936,
}, {deviceId: 1,name: "A相电压",signalTypeId: 3,ts: "2024-05-13 12:12:06",unit: "kV",3: 39.37936,value: 39.37936,
}];// 创建一个工作簿
const workbook = new ExcelJS.Workbook();// 添加一个工作表
const sheet1 = workbook.addWorksheet('Sheet1');// 设置列
sheet1.columns = [{ header: '日期', key: 'ts', width: 15 },{ header: "A相", key: '1', width: 15 },{ header: 'B相', key: '2', width: 15 },{ header: 'C相', key: '3', width: 15 }
];// 使用对象存储每个日期的数据
const rowDataMap = {};data.forEach(rowData => {const ts = rowData.ts;if (!rowDataMap[ts]) {rowDataMap[ts] = { ts };}const columnKey = rowData.signalTypeId.toString();rowDataMap[ts][columnKey] = rowData[columnKey] || '';
});// 填充数据
Object.values(rowDataMap).forEach(rowData => {sheet1.addRow(rowData);
});// 保存工作簿到文件
workbook.xlsx.writeFile('data.xlsx').then(() => {console.log('Excel 文件已生成');}).catch(err => {console.error('保存 Excel 文件时出错:', err);});

http://www.lryc.cn/news/362787.html

相关文章:

  • [C#]使用C#部署yolov8-seg的实例分割的tensorrt模型
  • 写个删除obj文件夹、bin文件夹的小工具
  • 【多目标跟踪】《FlowMOT: 3D Multi-Object Tracking by Scene Flow Association》论文阅读笔记
  • python长方形周长面积 2024年3月青少年编程电子学会python编程等级考试二级真题解析
  • C#WPF数字大屏项目实战02--主窗体布局
  • 【STM32】STM32F103C6T6标准外设库
  • 【学习笔记】Windows GDI绘图(十一)Graphics详解(下)
  • win10环境下nodejs安装过程
  • 亚信安慧AntDB:卓越的拓展性和灵活性
  • 【计算机毕设】基于SpringBoot的中小企业设备管理系统设计与实现 - 源码免费(私信领取)
  • 每日一练 - BGP配置中的认证方法
  • 人机交互中的阴差阳错
  • 个人网站建设方案书
  • IIS7整合Tomcat9服务器,并搭建ASP+PHP+JSP完整运行环境
  • IT运维重难点剖析及应对策略
  • 【Python学习】面向对象(OOP)
  • 鸿蒙HarmonyOS实战—如何使用Video组件播放视频
  • 【Paddle2ONNX】为 Paddle2ONNX 升级自适应ONNX IR Version功能
  • JS 中的DOM 操作
  • 短剧出海怎么做?
  • 【C++修行之道】类和对象(四)运算符重载
  • 伯克希尔也被ST?
  • 低代码和零代码软件时代质量管理(QM)和质量管理系统(QMS)
  • JS跨页面或跨JS文件对变量赋值
  • xxe漏洞——无回显(ctfshow web374——378)
  • 深入解读 Android Hook 技术-从原理到实践
  • 架构每日一学 15:想要提升协作效率,必须先统一语义
  • 基于树莓派4B设计的智能家居系统(华为云IOT)
  • 路由懒加载
  • 在Spring中实现资源的动态加载和卸载