commit 95aea0aa883347c81a964ec35bf7251d75c1fcba Author: Cheney Date: Thu Dec 12 20:53:14 2024 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d2b47d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +node_modules \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..269f90c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,110 @@ +{ + "name": "12.bin", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "12.bin", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "xlsx": "^0.18.5" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e0363e6 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "12.bin", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "xlsx": "^0.18.5" + } +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4405cd7 --- /dev/null +++ b/readme.md @@ -0,0 +1,5 @@ +# Readme + +q team.js C:/12.BIN + + diff --git a/src/team.js b/src/team.js new file mode 100644 index 0000000..99ceb01 --- /dev/null +++ b/src/team.js @@ -0,0 +1,73 @@ +const XLSX = require('xlsx'); + + + +const workbook4 = (function () { + const workbook = XLSX.readFile('../金额.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('../1.团队开票申请表-12.4.xlsx'); +const worksheet = workbook.Sheets[workbook.SheetNames[0]]; +const jsonData = XLSX.utils.sheet_to_json(worksheet); +for (let record of jsonData) { + console.log("---------------------") + console.log(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, '../test.xlsx'); \ No newline at end of file