|
|
/**
|
|
|
* 按新辰泽填写规范生成卡派表(不就<E4B88D>?splice,避免残留旧行)<E8A18C>?
|
|
|
* 用法: pnpm exec tsx scripts/fill-xcz-packing-template.ts
|
|
|
*/
|
|
|
import ExcelJS from "exceljs";
|
|
|
import path from "path";
|
|
|
|
|
|
const SRC = path.join(process.cwd(), "docx", "邮件", "模板", "数据模版.xlsx");
|
|
|
const OUT = path.join(
|
|
|
process.cwd(),
|
|
|
"docx",
|
|
|
"邮件",
|
|
|
"模板",
|
|
|
"数据模版-新辰<E696B0>?WHSU8127240.xlsx",
|
|
|
);
|
|
|
const CN = "WHSU8127240";
|
|
|
|
|
|
const LAS1_ADDR = [
|
|
|
"仓库代码<E4BBA3>?LAS1",
|
|
|
"收件人: LAS1",
|
|
|
"公司名称<E5908D>?AMAZON COM SERVICES INC",
|
|
|
"联系电话<E794B5>?0123456789",
|
|
|
"<22>?<3F>?区: NV / HENDERSON /",
|
|
|
"邮政编码<E7BC96>?89044-8746",
|
|
|
"收货地址<E59CB0>?12300 Bermuda Road",
|
|
|
].join("\n");
|
|
|
|
|
|
const PRIVATE_ADDR = [
|
|
|
"收件人: Erica Fabian",
|
|
|
"公司名称<E5908D>?Rapid Fulfillment",
|
|
|
"联系电话<E794B5>?818-492-2760",
|
|
|
"<22>?<3F>?区: CA / Pacoima /",
|
|
|
"邮政编码<E7BC96>?91331",
|
|
|
"收货地址<E59CB0>?12924 Pierce St",
|
|
|
].join("\n");
|
|
|
|
|
|
type Row = [
|
|
|
string,
|
|
|
string,
|
|
|
number,
|
|
|
string,
|
|
|
number,
|
|
|
number,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
string,
|
|
|
];
|
|
|
|
|
|
const ROWS: Row[] = [
|
|
|
[CN, "", 44, "卡派", 5.14, 567, LAS1_ADDR, "FBA16SQQ7PTF", "758SDXPH", "LAS1", "2026-03-29", "2026-04-06", "6268357756", ""],
|
|
|
[CN, "", 14, "卡派", 5.11, 562, LAS1_ADDR, "FBA16SQTM0R1", "39MFHV4O", "LAS1", "2026-03-29", "2026-04-06", "6268357756", ""],
|
|
|
[CN, "", 6, "卡派", 0.45, 98, LAS1_ADDR, "FBA16SRQFXY5", "3ROVWIOM", "LAS1", "2026-03-29", "2026-04-06", "9926386665", ""],
|
|
|
[CN, "", 5, "卡派", 2.56, 756.32, LAS1_ADDR, "FBA16SKZQCBB", "4UWQROSH", "LAS1", "2026-03-29", "2026-04-06", "20220729LAS139", ""],
|
|
|
[CN, "", 34, "卡派", 2.56, 756.32, LAS1_ADDR, "FBA16SL031T3", "5DQ3HYSM", "LAS1", "2026-03-29", "2026-04-06", "20220729LAS139", ""],
|
|
|
[CN, "", 7, "卡派", 0.24, 128, LAS1_ADDR, "FBA16SP4NBQR", "79VUM4FL", "LAS1", "2026-03-29", "2026-04-06", "822072867821", ""],
|
|
|
[CN, "", 5, "卡派", 0.48, 110.85, LAS1_ADDR, "FBA16SRW4F6W", "38JNRT2Q", "LAS1", "2026-03-28", "2026-04-08", "DGG803076", ""],
|
|
|
[CN, "", 8, "卡派", 0.88, 166, LAS1_ADDR, "FBA16SP4GFX0", "8OSM83RO", "LAS1", "2026-03-28", "2026-04-08", "JBHSF072803", ""],
|
|
|
[CN, "", 6, "卡派", 1.02, 249, LAS1_ADDR, "FBA16SJZHL56", "3ME4KJQV", "LAS1", "2026-03-28", "2026-04-08", "YZ22080003", ""],
|
|
|
[CN, "", 28, "卡派", 2.25, 429, PRIVATE_ADDR, "220729YT28NB", "", "", "", "", "/", "三票分开打托"],
|
|
|
[CN, "", 11, "卡派", 0.59, 242, PRIVATE_ADDR, "220730FK11", "", "", "", "", "/", ""],
|
|
|
[CN, "", 10, "卡派", 0.44, 136, PRIVATE_ADDR, "822072968180", "", "", "", "", "/", ""],
|
|
|
[CN, "", 16, "卡派", 1.76, 144.31, PRIVATE_ADDR, "FBA16SCKQQWC", "", "", "", "", "/", ""],
|
|
|
[CN, "", 6, "卡派", 0.4, 13, PRIVATE_ADDR, "XT0729JBSBD171", "", "", "", "", "/", ""],
|
|
|
[CN, "", 3, "UPS", 1.23, 296, "", "1Z4X98060308009900", "", "", "", "", "/", ""],
|
|
|
[CN, "", 5, "UPS", 1.23, 296, "", "1Z4X98060321113067", "", "", "", "", "/", ""],
|
|
|
[CN, "", 8, "UPS", 1.23, 296, "", "1Z4X98060322191230", "", "", "", "", "/", ""],
|
|
|
[CN, "", 24, "UPS", 0.72, 425, "", "1Z4X98060306370433", "", "", "", "", "/", ""],
|
|
|
[CN, "", 7, "UPS", 0.5, 103, "", "1Z4X98060307290787", "", "", "", "", "FBA16ST52H3N", ""],
|
|
|
[CN, "", 40, "FEDEX", 3.43, 595.86, "", "889396190583", "", "", "", "", "FBA16SV9CKD5", ""],
|
|
|
[CN, "", 12, "FEDEX", 1.1, 210, "", "889396190584", "", "", "", "", "/", ""],
|
|
|
[CN, "", 4, "自提", 0.8, 120, PRIVATE_ADDR, "PICKUP-XCZ-001", "", "", "", "", "/", ""],
|
|
|
[CN, "", 2, "存仓", 0.3, 45, "", "STORAGE-XCZ-001", "", "", "", "", "/", ""],
|
|
|
];
|
|
|
|
|
|
async function main() {
|
|
|
const srcWb = new ExcelJS.Workbook();
|
|
|
await srcWb.xlsx.readFile(SRC);
|
|
|
const src = srcWb.worksheets[0];
|
|
|
if (!src) throw new Error("no source sheet");
|
|
|
|
|
|
const outWb = new ExcelJS.Workbook();
|
|
|
const ws = outWb.addWorksheet(src.name || "Sheet1");
|
|
|
|
|
|
// 复制<E5A48D>?3 行表头(<E5A4B4>?+ 合并可忽略)
|
|
|
for (let r = 1; r <= 3; r++) {
|
|
|
const srcRow = src.getRow(r);
|
|
|
const vals: ExcelJS.CellValue[] = [];
|
|
|
srcRow.eachCell({ includeEmpty: true }, (cell, col) => {
|
|
|
vals[col - 1] = cell.value;
|
|
|
});
|
|
|
ws.addRow(vals);
|
|
|
}
|
|
|
|
|
|
for (const r of ROWS) {
|
|
|
const row = ws.addRow([...r]);
|
|
|
row.getCell(3).value = r[2];
|
|
|
row.getCell(5).value = r[4];
|
|
|
row.getCell(6).value = r[5];
|
|
|
}
|
|
|
|
|
|
await outWb.xlsx.writeFile(OUT);
|
|
|
try {
|
|
|
await outWb.xlsx.writeFile(SRC);
|
|
|
console.log(`also updated ${SRC}`);
|
|
|
} catch (e) {
|
|
|
console.warn(`skip overwrite locked template: ${(e as Error).message}`);
|
|
|
}
|
|
|
console.log(`filled ${ROWS.length} rows <20>?${OUT}`);
|
|
|
}
|
|
|
|
|
|
main().catch((e) => {
|
|
|
console.error(e);
|
|
|
process.exit(1);
|
|
|
});
|