【问题标题】:Showing undefined in excel label在excel标签中显示未定义
【发布时间】:2017-10-13 00:49:53
【问题描述】:

问题

它显示在导出的 excel 文件 undefine 上。但是它没有空数组索引。

代码

const joinDate = new Date(obj.date);
let snap = [
    obj.name,
    obj.surename,
    obj.email,
    obj.nip,
    obj.phone,
    obj.adress + " " + obj.home + " " + (obj.local=="brak" ? "" : obj.local),
    obj.city,
    obj.zip,
    obj.spentPoint,
    '',
    ''
];
orders.push(new Promise((resolve) => {
    let userNip = i;
    let ordersRef = firebase.database().ref('/orders/' + userNip);

    ordersRef.once("value", (snapshot) => {
        let ord = snapshot.val();
        let i = 0;

        for(let u in ord) {
            let o = ord[u];
            let newDate = new Date(o.date);
            let formatttedDate = String(newDate.getDate()) + "/" + String(newDate.getMonth()+1) + "/" + String(newDate.getFullYear());
            snap[10+i] = formatttedDate;
            for(let x in o.items) {
                snap[9+i] += String(o.items[x].title) + "[ Punktów: " + o.items[x].summary + " ]";
            }
            i = i + 2;
        }
        resolve();
    })
}));
data.push(snap);

在excel中看起来像:

name surename ..... 第一个产品名称,第一个产品日期,未定义的第二个产品名称,第二个产品日期。

我不知道它从哪里得到未定义。

数组中可以显示未定义的数据不少。

我在问题上画了红线。而且还在进行 3,4,5 项等...

有什么问题?

【问题讨论】:

    标签: javascript typescript firebase-realtime-database


    【解决方案1】:

    snap[9+i] 给你undefined。 9号是干什么用的? 10?

    如果您要定位 snap 中的特定项目,请始终在静态索引处访问它,例如 snap[1]snap[9]snap[10]

    因为您要添加 9 + 1 并在没有 11 个项目的数组中查找第 11+ 个项目,所以这很糟糕。

    编辑:

    如果您有维护格式,这不是显示数据的好方法,但可能需要某些外部进程,请尝试以下操作:

    const joinDate = new Date(obj.date);
    let snap = [
      obj.name,
      obj.surename,
      obj.email,
      obj.nip,
      obj.phone,
      obj.adress + " " + obj.home + " " + (obj.local=="brak" ? "" : obj.local),
      obj.city,
      obj.zip,
      obj.spentPoint,
    ];
    
      orders.push(new Promise((resolve) => {
      let userNip = i;
      let ordersRef = firebase.database().ref('/orders/' + userNip);
    
      ordersRef.once("value", snapshot=>{
        let ord = snapshot.val();
    
        for(let u in ord){
          let o = ord[u];
          let newDate = new Date(o.date);
          let formatttedDate = String(newDate.getDate()) + "/" + String(newDate.getMonth()+1) + "/" + String(newDate.getFullYear());
    
          snap.push(formatttedDate);
          for(let x in o.items){
            snap.push(String(o.items[x].title) + "[ Punktów: " + o.items[x].summary + " ]");
          }
    
        }
        resolve();
      })
    }))
    data.push(snap);
    

    【讨论】:

    • snap中的索引我在excel中制作columuns。该项目将在 9 日、11 日、13 日、15 日等。如果这很糟糕,我该如何以其他方式制作它?
    • 数据应该是什么样的?每个客户 1 行包含客户信息列,1 列包含日期,1 列包含所有项目的摘要?
    • 是的,每个客户一行 1 行,数据列很少(电话、邮政编码等),之后所有项目的数据都为每列分开
    • 你能把它分成每件1行吗?会使 Excel 中的报告和解析更容易,还是要求每个订单只能有 1 行,所有行项目在同一行但不同的列?
    • 查看编辑后的答案 - 如果您只是说“每个项目,添加格式化的日期列,然后添加项目的列”,您只需执行 2 次推送。说 array[nonexistent index] 通常是行不通的,因为这些元素还不存在,但如果你 push 一个新值,它应该添加到数组的末尾
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多