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
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.");
|
|
}
|
|
} |