[solved] 如何將取得的資料填入已存在excel的對應位置

如果我需要透過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