[solved] Excel 表格處理:只需要7個欄位,但是還是得到其他不需要的欄位

Excel 表格處理:
原始檔案一共有81個欄位。
以下面的Code 可輸出檔案
console.log(input);
input.forEach(element => {
if(element[“部門”]){ // 確認這是一個物件,而不是空值
if(element[“部門”].includes(“材料部”)) {
if(element[“Status”]){ // 確認這是一個物件,而不是空值
if(element[“Status”].includes(“Delay”)||element[“Status”].includes(“Urgent”)){
output.push(element);
}
}
}
}
});
output.header.push(“部門”,“姓名”,“Item Due”,“Status”,“需求簡述”,“技術對策項目”,“Item 執行項目”);
console.log(output);

我只需要7個欄位,但是還是得到輸出其他不需要的欄位。
請問該如何修改?

@poky.tsai 您好,

output 中有哪些資料,EMILY 就會將這些資料輸出出去

output.header.push(...)

是控制表頭的順序

若要控制輸出的資料有哪些欄位
可以將

output.push(element)

這行程式碼改寫為以下

// column1~column7 自行替換成需要的欄位
output.push({
  column1 : element['column1'],
  column2 : element['column2'],
  ...
  column7 : element['column7']
})

再麻煩回報嘗試的結果,感謝!

1 Like

// output.header.push(“部門”,“姓名”,“Item Due”,“Status”,“需求簡述”,“技術對策項目”,“Item 執行項目”,"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");

output.push({
column1:element[“部門”],
column2:element[“姓名”],
column3:element[“Item Due”],
column4:element[“Status”],
column5:element[“需求簡述”],
column6:element[“技術對策項目”],
column7:element[“Item 執行項目”]
});

執行NG。

Debug顯示
excel2csv:475 ReferenceError: element is not defined
at process (code?key=328f1fe41beaff68a459c9624678c206:22:11)
at excel2csv:414:23
image
image
image

Hi @poky.tsai 你好,

錯誤訊息顯示 : 您於程式碼中並未定義 element 這個變數

我在上一則留言中指的是 保留您原有在圖片中的所有程式碼,只修改第 10 行 :

output.push(element)

上面這一行改為 :

output.push({
  column1 : element['column1'],
  column2 : element['column2'],
  ...
  column7 : element['column7']
})

修改如下:
console.log(input);
input.forEach(element => {
if(element[“表單類別”]){ // 確認這是一個物件,而不是空值
if(element[“表單類別”].includes(“表單1”)||element[“表單類別”].includes(“表單2”)||element[“表單類別”].includes(“表單3”)) {
if(element[“Case BU”]){ // 確認這是一個物件,而不是空值
if(element[“部門”].includes(“部門1”)||element[“Case BU”].includes(“BU2”)){
// output.push(element);
output.push({
column1 : element[“表單類別”],
column2 : element[“Case BU”],
column3 : element[“需求簡述”],
column4 : element[“姓名”],
column5 : element[“部門”],
column6 : element[“Case issue date”],
column7 : element[“Case Due date”],
column8 : element[“Case close date”],
column9 : element[“Case issue year”],
column10 : element[“Case issue month”],
column11 : element[“Case close year”],
column12 : element[“Case close month”],
});
}
}
}
}
});
output.header.push(“表單類別”,“Case BU”,“需求簡述”,“姓名”,“部門”,“Case issue date”,“Case Due date”,“Case close date”,“Case issue year”,“Case issue month”,“Case close year”,“Case close month”);
console.log(output);

測試結果:

  1. 後面多餘的資料沒出現了。
  2. 但是欄位名稱與column1~12,錯開呈現

Hi @poky.tsai,

output 陣列中的每一個物件代表輸出的 CSV 檔案的每一列資料
而物件中的 key 代表表頭的名稱,value 代表儲存格中的值
如果 output 長的像以下例如 :

console.log(output)
// [{'column1' : "1", 'column2' : "2"}, 
// {'column1' : "3", 'column2' : "4"}]

輸出的表格就會像以下

column1 column2
1 2
3 4

所以程式碼中的 column1 ~ column7 要替換成你要輸出的表頭名稱 :

output.push({
  '表單類別' : element['表單類別'],
  'Case BU' : element['Case BU'],
  ...
  'Case close month' : element['Case close month']
})
1 Like

問題已解決。

備註:
您的說明範例
‘表單類別’ : elemant[‘表單類別’],
應該是element

1 Like