const XLSX = require('xlsx'); if ( process.argv.length < 3 ) { console.log("没有传递目录") process.exit(-1) } let path = process.argv[2] console.log("工作于 " + path) const workbook4 = (function () { const workbook = XLSX.readFile(path + '/金额.xlsx'); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const jsonData = XLSX.utils.sheet_to_json(worksheet); let map = {} for ( let record of jsonData ) { map[`${record["TEAM号"]}-${record["关键词"]}费用-${record["类别"]}`] = record["金额"] } return map; })() const workbook = XLSX.readFile(path + '/1.团队开票申请表.xlsx'); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const jsonData = XLSX.utils.sheet_to_json(worksheet); for (let record of jsonData) { console.log("---------------------") console.table(record) // console.log(`序号 ${record['序号']}, 结算明细 ${record['结算明细']}`) switch ( record['结算明细'] ) { case "国际票": case "机票行程单": case "附加项": console.log("账单总金额 = 行程单金额") record[' 账单总金额 '] = record[' 行程单金额 '] break; case "酒店费用": case "国际酒店费用": // 房费 let key = `${record['结算账户']}-${record["结算明细"]}-房费`; let fang = workbook4[key]; record[' 房费 '] = fang ? fang : 0 // 商旅服务费 key = `${record['结算账户']}-${record["结算明细"]}-服务费`; let fuwu = workbook4[key]; record[' 商旅服务费 '] = fuwu ? fuwu : 0 record[' 账单总金额 '] = fang + fuwu break; case "火车票": console.log("账单总金额 = 火车票 ") record[' 账单总金额 '] = record[' 火车票 '] break; case "服务费": console.log("账单总金额 = 商旅服务费 ") record[' 账单总金额 '] = record[' 商旅服务费 '] break; default : console.error("不支持的类型: " + record['结算明细']) } console.log("+++++++++++++++++") console.log(record) } const worksheetout = XLSX.utils.json_to_sheet(jsonData); const workbookout = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbookout, worksheetout, 'Sheet1'); XLSX.writeFile(workbookout, path + '/1.团队开票申请表.done.xlsx');