首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义的属性' username‘,excel4node无法读取属性username

无法读取未定义的属性' username‘,excel4node无法读取属性username
EN

Stack Overflow用户
提问于 2021-09-08 07:30:55
回答 1查看 35关注 0票数 0

我不得不用excel4node打印一些excel格式的数据。在数据中,我有一些对象,这些对象包含我想要转换为excel格式的信息。但由于某些原因,它显示错误: TypeError: Cannot read property 'username‘of undefined。在对象内部,我有属性username和它的值。下面是代码:

代码语言:javascript
复制
const wb = new xl.Workbook();
const data = {};
data = {
    username: 'name',
    department: 'department',
    title: 'title',
    percentage: 23,
    correct: 27,
    date: 2021-09-03T16:38:05.107Z
}

const fileName = "Excel.xlsx";
const filePath = path.resolve(__dirname, "../.././public/files/", fileName);

const ws = wb.addWorksheet("Sheet 1");

const style = wb.createStyle({
font: {
  color: "FFFFFFFF",
  size: 12,
},
});

const form = [
"name",
"name",
"name",
"name",
"name",
"name",
];

for (let i = 0; i < form.length; i++) {
ws.cell(1, i + 1)
  .string(form[i])
  .style(style);
switch(i) {
  case 1:
    ws.column(2).setWidth(30);
    break;
  case 3:
    ws.column(4).setWidth(30);
    break;
  case 4:
    ws.column(5).setWidth(30);
    break;
  case 5:
    ws.column(6).setWidth(30);
    break;
}
}

for(let i = 1; i <= data.length; i++) {
ws.cell(i + 1, 1).number(i);
ws.cell(i + 1, 2).string(data[i].username);
ws.cell(i + 1, 3).date(data[i].date.toString());
ws.cell(i + 1, 4).string(data[i].department);
ws.cell(i + 1, 5).number(data[i].percentage);
ws.cell(i + 1, 6).number(data[i].correct);
}
wb.write(filePath);
EN

回答 1

Stack Overflow用户

发布于 2021-09-08 07:51:36

在脚本的底部,您可以看到您正在遍历data.length并尝试将其插入到您的单元格中。

在页面的顶部,您的数据对象不是Array,而是一个对象,并且索引对象必须通过键而不是索引值来完成。这就是为什么它找不到用户名的原因,因为它正在寻找"object.1.username“。

如果您希望使用索引值,请将数据对象切换为数组。

代码语言:javascript
复制
const data = {};
data = {
    username: 'name',
    department: 'department',
    title: 'title',
    percentage: 23,
    correct: 27,
    date: 2021-09-03T16:38:05.107Z
}

现在变成了

代码语言:javascript
复制
const data = [{
    username: 'name',
    department: 'department',
    title: 'title',
    percentage: 23,
    correct: 27,
    date: 2021-09-03T16:38:05.107Z
}];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69098744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档