forked from ttc/micro-service-api
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
const XLSX = require('xlsx');
|
|
const fs = require('fs');
|
|
|
|
const workbook = XLSX.readFile('input.xlsx');
|
|
const sheet = workbook.Sheets[workbook.SheetNames[0]];
|
|
const data = XLSX.utils.sheet_to_json(sheet);
|
|
|
|
// สร้าง map รวมยอด
|
|
const summary = {};
|
|
|
|
data.forEach(row => {
|
|
const project = row['โครงการ'];
|
|
const dept = row['แผนกวิชา'];
|
|
const budget = Number(row['งบประมาณ']) || 0;
|
|
|
|
if (!summary[project]) summary[project] = {};
|
|
if (!summary[project][dept]) summary[project][dept] = 0;
|
|
|
|
summary[project][dept] += budget;
|
|
});
|
|
|
|
// แปลงกลับเป็น array สำหรับ export
|
|
const result = [];
|
|
Object.keys(summary).forEach(project => {
|
|
const row = { โครงการ: project, ...summary[project] };
|
|
result.push(row);
|
|
});
|
|
|
|
// เขียน Excel
|
|
const newSheet = XLSX.utils.json_to_sheet(result);
|
|
const newBook = XLSX.utils.book_new();
|
|
XLSX.utils.book_append_sheet(newBook, newSheet, 'Summary');
|
|
XLSX.writeFile(newBook, 'output.xlsx');
|
|
|
|
console.log('✅ สรุปเสร็จแล้ว → output.xlsx');
|