Psyduck - 可達鴨 之 鴨力山大 v0.1
Current File : /home/irplbiz/node_application/icl_calc/routes/calculate.js |
const express = require('express');
const router = express.Router();
const ExcelJS = require('exceljs');
const path = require('path');
router.post('/', async (req, res) => {
try {
const {
beltDesignation,
beltWidth,
rollLengthFeet,
rollLengthMeters,
topCover,
bottomCover
} = req.body;
console.log({
beltDesignation,
beltWidth,
rollLengthFeet,
rollLengthMeters,
topCover,
bottomCover
} );
const workbook = new ExcelJS.Workbook();
const filePath = path.join(__dirname, '../excel/ICL_Calculator.xlsx');
console.log("Path" , filePath);
await workbook.xlsx.readFile(filePath);
const sheet = workbook.getWorksheet('Final Sheet');
workbook.calcProperties.fullCalcOnLoad = true;
const row = sheet.getRow(4); // ✅ writing to Row 3
row.getCell('A').value = parseInt(beltDesignation);
row.getCell('B').value = parseInt(beltWidth);
let finalRollLength = null;
if (rollLengthFeet) {
finalRollLength = rollLengthFeet ;
} else if (rollLengthMeters) {
finalRollLength = rollLengthMeters / 0.3048;
}
row.getCell('C').value = parseInt(finalRollLength);
row.getCell('F').value = parseFloat(topCover);
row.getCell('G').value = parseFloat(bottomCover);
row.commit();
await workbook.xlsx.writeFile(filePath).then( () => {console.log(sheet.getRow(4).getCell('AE').value)});
await workbook.xlsx.readFile(filePath);
const sheet1 = workbook.getWorksheet('Final Sheet');
console.log(beltDesignation,beltWidth,rollLengthFeet,rollLengthMeters,finalRollLength, topCover, bottomCover);
const rollsPer20ftContainer = sheet1.getRow(4).getCell('AE').value.result;
const rollsPer40ftContainer = sheet1.getRow(4).getCell('AN').value.result;
return res.json({
rollsPer20ftContainer,
rollsPer40ftContainer
});
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Calculation failed.' });
}
});
module.exports = router;