如果我需要透過A excel檔案取得資料後,對照到B excel後填入關鍵值對應的欄位中,
後半段的步驟該透過何種方式能夠達成呢?
Hi @Jason 你好,
您提及的相關功能是否為參照某個欄位值?
以下舉例 :
EXCEL A
name | age |
---|---|
Jimmy | 29 |
Alice | 26 |
Tom | 18 |
EXCEL B
name | phone | age |
---|---|---|
Alice | 09-123 | |
Karen | 09-456 | |
Bob | 09-789 | |
Jimmy | 09-321 |
得到 EXCEL A 資料後,填入EXCEL B 中的 age 欄位
最後輸出結果應該為
OUTPUT EXCEL
name | phone | age |
---|---|---|
Alice | 09-123 | 26 |
Karen | 09-456 | - |
Bob | 09-789 | - |
Jimmy | 09-321 | 29 |
要做到以上功能可以參考下方步驟與程式碼 :
1. 讀取 EXCEL A 並生成中繼資料
使用 EXCEL 表格分析讀取 EXCEL A 並輸出文字檔
表頭列與資料起點請自行設定
output['中繼資料A'] = JSON.stringify(input)
2. 讀取 EXCEL B 與中繼資料A,根據這些資料來生成結果
使用 EXCEL 表格處理 讀取 EXCEL B 並輸出 OUTPUT EXCEL
let excelA = JSON.parse(api.read("中繼資料A"))
//excelB 每一列 loop
input.forEach((excelB_row) => {
//利用 lodash 來尋找在 excelA 中與 excelB 當前的row, name欄位相符的資料
//可以自行打印 target 變數來查看他找到什麼東西
let target = _.find(excelA, (excelA_row) => excelA_row["name"] === excelB_row["name"])
output.push({
name : excelA_row["name"],
phone : excelB_row["phone"],
//如果有找到 target, 則帶入 target 的 age, 若沒找到(undefined), 則帶入 "-"
age : target ? target["age"] : "-"
})
})
以上提供您參考,請再回覆我是否有解答您的問題,謝謝!
Hi Jimmy
了解了,感謝您詳細的回覆。
1 Like
進一步請教,
有辦法直接寫入目標Excel檔案(B Excel已經存在)而不是另外產生一個新的,
或者需要套表(Excel)的情況該如何實踐?
1 Like
Hi @Jason,
目前的 EXCEL 相關模組都會是產生新的檔案為主
若以現有模組要做到這個功能的話
可以使用 Desktop Automation 使用鍵盤跟滑鼠像人一樣來操作原本的 EXCEL
Hi Jimmy
了解了,感謝您的回覆,我再嘗試操作看看。
1 Like