Hola estimados, es posible que en el comboList o comboBox donde se seleccionan los campos se pueda implementar hacer una selección múltiple o selección mas de un registros para cargar la tabla dinámica??
Además, he tratado de personalizar la tabla dinámica incluyéndole un scroll en los registros y fijar el encabezado, pero no he logrado aún.
La tabla dinámica se carga desde un archivo Excel
Este es el código que tengo actualmente.
// pivote.js
// Función para crear Tabla Dinámica que se adapta a diferentes estructuras de datos
function criarTabelaDinamica(data) {
// Verificar si los datos son un array de objetos
if (Array.isArray(data) && data.length > 0 && typeof data[0] === 'object') {
// Supongamos que el objeto data es una lista de objetos donde cada objeto representa una fila del Excel
// Aquí se extraen las claves de un objeto para usarlas como nombres de columna
const columnKeys = Object.keys(data[0]);
// Función para generar colores aleatorios
function generateRandomColors(count) {
const colors = [];
for (let i = 0; i < count; i++) {
const color = '#' + Math.floor(Math.random() * 16777215).toString(16);
colors.push(color);
}
return colors;
}
// Aquí se configuran las opciones para la tabla dinámica
const pivotOptions = {
rows: [columnKeys[0]], // Tomamos la primera clave como fila
cols: [columnKeys[1]], // Tomamos la segunda clave como columna
aggregatorName: 'Sum',
vals: [columnKeys[2]], // Tomamos la tercera clave como valor
renderers: {
'Table': $.pivotUtilities.renderers['Table'],
'Table Barchart': $.pivotUtilities.renderers['Table Barchart'],
'Heatmap': $.pivotUtilities.renderers['Heatmap'],
'Row Heatmap': $.pivotUtilities.renderers['Row Heatmap'],
'Col Heatmap': $.pivotUtilities.renderers['Col Heatmap'],
}
};
// Crear la tabla dinámica
$('#pivotTable').pivotUI(data, pivotOptions);
} else {
console.error('Los datos proporcionados no son válidos para crear la tabla dinámica.');
}
}
// Función para manejar la carga de un archivo Excel
document.getElementById('fileUpload').addEventListener('change', function(event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
const sheetName = workbook.SheetNames[0]; // Suponiendo que los datos están en la primera hoja
const jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]);
criarTabelaDinamica(jsonData);
};
reader.readAsArrayBuffer(file);
}
});
Esta es la linea que esta en mi tabla.html
<div id="pivotTable" class="pvtTable"> </div>
Hola estimados, es posible que en el comboList o comboBox donde se seleccionan los campos se pueda implementar hacer una selección múltiple o selección mas de un registros para cargar la tabla dinámica?? Además, he tratado de personalizar la tabla dinámica incluyéndole un scroll en los registros y fijar el encabezado, pero no he logrado aún.
La tabla dinámica se carga desde un archivo Excel
Este es el código que tengo actualmente.