node.js - 如何在 Node js 中迭代行并打印 excel 中的对象值?

标签 node.js excel express excel4node

我有一个对象数组,如下所示:

[
    {   "FirstName": "John", 
        "LastName": "Parker", 
        "Age": "23", 
        "Cat": "23g",
        "SOP": "Active"
    },
    {   "FirstName": "Rose", 
        "LastName": "Jackson", 
        "Age": "44", 
        "Cat": "44g",
        "SOP": "InActive"
    }
]

我正在使用excel4node创建对象的数据并将其写入 Excel

async generateExclReport(req, res) {
        try {

            var wb = new xl.Workbook();

            // Add Worksheets to the workbook
            var ws = wb.addWorksheet('Report');

            ws.cell(1, 1).string('FirstName');
            ws.cell(1, 2).string('LastName');
            ws.cell(1, 3).string('Age');
            ws.cell(1, 4).string('Cat');
            ws.cell(1, 5).string('SOP');


            var fileName = "Report" + Date.now().toString() + '.xlsx';

            res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            wb.write(fileName, res);
        } catch (err) {
            this.handleError(res, err);
        }    
    }

我可以打印 Excel 中的标题并下载,但如何在 Excel 中打印对象的数据?

非常感谢任何帮助。

最佳答案

您可以循环访问数据并确保跳过您创建的标题行。

Excel 行从行 1 开始,并且您的数组索引为 0,因此您需要确保始终从 1 开始写入 Excel 或在您的情况下从第 2 行开始,因为您创建了标题行(这就是为什么您会看到 ws.cell(i + 2, 1).string(data[i ].FirstName);).

这是一个示例 Express 应用程序:

依赖关系:

npm install express
npm install excel4node

代码:

const express = require('express');
const xl = require('excel4node');

const app = express();

app.get('/', (req, res) => {
  try {
    const data = [
      {   "FirstName": "John", 
          "LastName": "Parker", 
          "Age": "23", 
          "Cat": "23g",
          "SOP": "Active"
      },
      {   "FirstName": "Rose", 
          "LastName": "Jackson", 
          "Age": "44", 
          "Cat": "44g",
          "SOP": "InActive"
      }
    ];

    const wb = new xl.Workbook();

    // Add Worksheets to the workbook
    const ws = wb.addWorksheet('Report');

    ws.cell(1, 1).string('FirstName');
    ws.cell(1, 2).string('LastName');
    ws.cell(1, 3).string('Age');
    ws.cell(1, 4).string('Cat');
    ws.cell(1, 5).string('SOP');

    for (let i = 0; i < data.length; i += 1) {
      ws.cell(i + 2, 1).string(data[i].FirstName);
      ws.cell(i + 2, 2).string(data[i].LastName);
      ws.cell(i + 2, 3).string(data[i].Age);
      ws.cell(i + 2, 4).string(data[i].Cat);
      ws.cell(i + 2, 5).string(data[i].SOP);
    }

    const fileName = `Report_${Date.now().toString()}.xlsx`;

    res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
    wb.write(fileName, res);

  } catch (err) {
      console.error(res, err);
  }
});

app.listen(3000, () => console.log('Example app listening on port 3000!'))

关于node.js - 如何在 Node js 中迭代行并打印 excel 中的对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50041165/

相关文章:

node.js - Firebase:找不到 firebase 命名空间;请务必在此库之前包含 firebase-app.js。我得到了那个错误。我应该如何修复我的代码?

django pandas数据框下载为excel文件

vba - 在VBA中搜索范围并替换包含特定字符串的单元格内容

excel - 在一系列单元格中搜索某个字符串并替换

javascript - 为什么我会收到此 Cloud Firestore 功能错误?

javascript - 错误: data and salt arguments required (am i missing something)?

node.js - 如何使用 Node Promise 从 Oracle 返回多个结果集

javascript - SQLite 在 Javascript Node.JS 中将变量值插入为 Null

javascript - Express.js 路由没有意义

javascript - Firebase Cloud 函数更新数据库中的所有条目