import ExcelJS from 'exceljs'; import path from 'path'; /** * Create test fixture Excel files for unit tests */ async function createTestFixture() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); // Row 1: Order title worksheet.addRow([null, '离散备料计划']); // Row 2-5: Order header info worksheet.addRow([null, '生产部门:', null, '生产车间', '产品编码:', null, 'P001']); worksheet.addRow([null, '生产订单:', null, 'SC202501001', '产品名称:', null, '测试产品A']); worksheet.addRow([null, '产品规格:', null, '标准规格', '计划数量:', null, '100']); worksheet.addRow([null, '单位:', null, '件', '需用日期:', null, '2025-02-15']); // Row 6: Empty row before table header worksheet.addRow([]); // Row 7: Table header worksheet.addRow([ null, '序号', '材料编码', '材料名称', '规格', '型号', '图号', '物料材质', '计划数量', '单位', '需用日期', '发料仓库', '单位用量', '累计出库数量', ]); // Row 8-10: Material data worksheet.addRow([ null, 1, 'M001', '钢材A', '规格1', '型号1', '图号1', '材质1', 50, 'kg', '2025-02-10', '仓库1', 0.5, 0, ]); worksheet.addRow([ null, 2, 'M002', '塑料B', '规格2', '型号2', '图号2', '材质2', 100, 'kg', '2025-02-12', '仓库1', 1.0, 20, ]); worksheet.addRow([ null, 3, 'M003', '配件C', '规格3', null, null, null, 200, '件', '2025-02-14', '仓库2', 2.0, 50, ]); // Row 11: Footer info worksheet.addRow([null, '制单人:', null, '张三', '打印人:', null, '李四']); worksheet.addRow([null, '打印日期:', null, '2025-01-15']); // Save file const filePath = path.resolve(__dirname, 'test-export.xlsx'); await workbook.xlsx.writeFile(filePath); console.log('Created test fixture:', filePath); } async function createEmptyOrdersFixture() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); // Row 1: Order title worksheet.addRow([null, '离散备料计划']); // Row 2-5: Order header info worksheet.addRow([null, '生产部门:', null, '生产车间', '产品编码:', null, 'P002']); worksheet.addRow([null, '生产订单:', null, 'SC202501002', '产品名称:', null, '测试产品B']); worksheet.addRow([null, '产品规格:', null, '特殊规格', '计划数量:', null, '50']); worksheet.addRow([null, '单位:', null, '套', '需用日期:', null, '2025-03-01']); // Row 6: Empty row before table header worksheet.addRow([]); // Row 7: Table header worksheet.addRow([ null, '序号', '材料编码', '材料名称', '规格', '型号', '图号', '物料材质', '计划数量', '单位', '需用日期', '发料仓库', '单位用量', '累计出库数量', ]); // Row 8: Empty row (no data) worksheet.addRow([]); // Row 9: Footer info worksheet.addRow([null, '制单人:', null, '王五', '打印人:', null, '赵六']); worksheet.addRow([null, '打印日期:', null, '2025-01-16']); // Save file const filePath = path.resolve(__dirname, 'test-empty-orders.xlsx'); await workbook.xlsx.writeFile(filePath); console.log('Created empty orders fixture:', filePath); } async function main() { console.log('Creating test fixture Excel files...'); await createTestFixture(); await createEmptyOrdersFixture(); console.log('Done!'); } main().catch(console.error);