You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.9 KiB
JavaScript

// export-excel.js
async function handleExportExcel() {
try {
console.log("[MOCK] Iniciando generación de reporte Excel...");
// 1. Crear un nuevo libro de trabajo (Workbook) en blanco
const workbook = XLSX.utils.book_new();
// Definimos los sensores y el nombre que tendrá cada pestaña en el Excel
const sensors = [
{ id: 'rtd', sheetName: 'Temperatura_RTD' },
{ id: 'ph', sheetName: 'Sensor_pH' },
{ id: 'do', sheetName: 'Oxigeno_DO' },
{ id: 'ec', sheetName: 'Conductividad_EC' }
];
// 2. Iterar sobre cada sensor, obtener sus datos y crear su hoja
for (const sensor of sensors) {
// Reutilizamos el mock de la Fase 4
const data = await fetchHistoricalData(sensor.id);
// SheetJS convierte automáticamente un array de objetos JSON a una hoja de cálculo
const worksheet = XLSX.utils.json_to_sheet(data);
// Ajustar el ancho de las columnas para que se lea mejor el Timestamp
const wscols = [
{ wch: 30 }, // Ancho para la columna Timestamp
{ wch: 15 }, // Ancho para la columna Sensor
{ wch: 15 } // Ancho para la columna Valor
];
worksheet['!cols'] = wscols;
// Añadir la hoja al libro de trabajo
XLSX.utils.book_append_sheet(workbook, worksheet, sensor.sheetName);
}
// 3. Forzar la descarga del archivo binario .xlsx
const fileName = `Reporte_Bioreactor_${new Date().getTime()}.xlsx`;
XLSX.writeFile(workbook, fileName);
console.log("[EXITO] Archivo Excel multihabitación descargado correctamente.");
} catch (error) {
console.error("[ERROR] Fallo al exportar el Excel:", error);
alert("Hubo un error al generar el Excel. Revisa la consola.");
}
}