• 如何利用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数据导出表格实现日期去重,同时保留对应日期的每一列数据

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

    1. const ExcelJS = require('exceljs');
    2. // 示例数据
    3. const data = [{
    4. deviceId: 1,
    5. name: "B相电压",
    6. signalTypeId: 1,
    7. ts: "2024-05-13 12:10:06",
    8. unit: "kV",
    9. 1: 39.37936,
    10. value: 39.37936,
    11. }, {
    12. deviceId: 1,
    13. name: "A相电压",
    14. signalTypeId: 2,
    15. ts: "2024-05-13 12:11:06",
    16. unit: "kV",
    17. 1: 39.37936,
    18. value: 39.37936,
    19. }, {
    20. deviceId: 1,
    21. name: "A相电压",
    22. signalTypeId: 2,
    23. ts: "2024-05-13 12:11:06",
    24. unit: "kV",
    25. 2: 39.37936,
    26. value: 39.37936,
    27. }, {
    28. deviceId: 1,
    29. name: "A相电压",
    30. signalTypeId: 3,
    31. ts: "2024-05-13 12:12:06",
    32. unit: "kV",
    33. 3: 39.37936,
    34. value: 39.37936,
    35. }];
    36. // 创建一个工作簿
    37. const workbook = new ExcelJS.Workbook();
    38. // 添加一个工作表
    39. const sheet1 = workbook.addWorksheet('Sheet1');
    40. // 设置列
    41. sheet1.columns = [
    42. { header: '日期', key: 'ts', width: 15 },
    43. { header: "A相", key: '1', width: 15 },
    44. { header: 'B相', key: '2', width: 15 },
    45. { header: 'C相', key: '3', width: 15 }
    46. ];
    47. // 使用对象存储每个日期的数据
    48. const rowDataMap = {};
    49. data.forEach(rowData => {
    50. const ts = rowData.ts;
    51. if (!rowDataMap[ts]) {
    52. rowDataMap[ts] = { ts };
    53. }
    54. const columnKey = rowData.signalTypeId.toString();
    55. rowDataMap[ts][columnKey] = rowData[columnKey] || '';
    56. });
    57. // 填充数据
    58. Object.values(rowDataMap).forEach(rowData => {
    59. sheet1.addRow(rowData);
    60. });
    61. // 保存工作簿到文件
    62. workbook.xlsx.writeFile('data.xlsx')
    63. .then(() => {
    64. console.log('Excel 文件已生成');
    65. })
    66. .catch(err => {
    67. console.error('保存 Excel 文件时出错:', err);
    68. });

  • 相关阅读:
    PyCharm高校固定资产管理系统django-python+vue
    2023-10学习笔记
    Rocky9.2根目录满了如何扩容根目录
    性能调优读书笔记(上篇)
    springboot面向园区管理的物联网云平台设计与实现毕业设计源码150916
    npm内部机制与核心原理
    IMBG120R220M1HXTMA1 采用D2PAK-7L封装,N型 MOSFET
    webpack5基础--01_基本使用
    ssm杏坛女子书院网站毕业设计源码
    redis 哨兵 sentinel(二) 哨兵原理
  • 原文地址:https://blog.csdn.net/qq_35145095/article/details/139358964