【问题标题】:ExcelJS Data under specific date column特定日期列下的 ExcelJS 数据
【发布时间】:2022-01-18 23:46:42
【问题描述】:

我正在使用 nodejs 应用程序中的 exceljs 包创建一个 excel 工作表。我有一组像这样生成的标头。

const monthsArray = arrDays.map((str) => (
   { header: str, key: str, width: 10 } // Example { header: "12-15-2021", key: "12-15-2021", width: 10}
));

let headers = [
   { header: "Name", key: "Name", width: 10 },
   { header: "Phone", key: "Phone", width: 13 },
   { header: "CNIC", key: "CNIC", width: 13 },
   { header: "City", key: "City", width: 10 },
   ...monthsArray
];

现在我正在运行一个聚合,它将返回我的用户记录,同时我将在其中获得一个嵌套对象,该对象将包含特定日期的出勤记录,例如 createdAt: "2021-12-15T19:56:37.984Z" 和 present: true。现在标题我可以在第一行正确打印出每列顶部的日期,在此之前打印出姓名、电话、城市等数据。但是我需要知道如何在正确的情况下显示正确的出勤记录柱子?这样,对于特定用户,true 必须写在 12-15-2021 列下。

这是我如何生成 excel 文件

generateAndUploadExcel: async function (worksheetName, headers, rows) {
    var workbook = new Excel.Workbook();
    var sheet = workbook.addWorksheet(worksheetName);
  
    sheet.columns = headers;
    sheet.addRows(rows);
    try {
      var bufferFile = await workbook.xlsx.writeBuffer();
      const fileExt = "xlsx";
      const aws = new FileUploadService(
        awsConfig.accessKeyId,
        awsConfig.secretAccessKey,
        awsConfig.bucketName
      );
      const upload = await aws.uploadBuffer(
        "download-center",
        bufferFile,
        fileExt,
        worksheetName
      );
      return upload;
    } catch (err) {
      throw new Error(err);
    }
  }

【问题讨论】:

  • 大家对此有什么想法吗?
  • 你能创建一个这个问题的沙箱吗?
  • @Spankied 涉及的依赖项太多。您可以查看相关文件的这张图片来了解一下。 drive.google.com/file/d/1McfIO-yaGIQct_bnOxilneOrWzRlGFYa/…
  • 我确信这看起来是一个很容易从技术上解决的问题,但我对这个问题本身感到很困惑。也许您可以改写它并获得更多有用的反馈。因为老实说,我不明白这个问题。

标签: javascript node.js exceljs


【解决方案1】:

首先,将数据库日期转换为用于创建日期标题(键)的完全相同的格式,以便访问 exceljs 工作表中的特定列,并在添加行时执行 row['date-key']=true or false

例如dateheader = { header: "12-15-2021", key: "12-15-2021", width: 10} 这里的关键是12-15-2021,出席的DB日期是2021-12-15T19:56:37.984Z,将其转换为12-15-2021,然后就可以了

let row={}
row['name']=user.name; 
row['city']=user.city; 
row[convertedDate]=true;
sheet.addRow(row);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2020-08-21
    • 2022-08-18
    相关资源
    最近更新 更多