Hola, una solicitud de mis clientes es que ellos puedan copiar y pegar desde Excel a una Cuadrícula Interactiva, sé que tal función no existe actualmente, sin embargo, he investigado como copiar datos de Excel y pegar en una tabla HTML con JS y he adaptado dicho código a una IG pero no logro copiar todos los datos en la columna 2 del IG.
A continuación presento la imagen del caso desarrollado en APEX 22.2:

Como puede apreciarse en la imagen, los datos de Excel pegados al elemento de tipo TextArea(rotulado como Nuevo) son:
1 10
2 11
3 12
4 14
Al presionar el botón Pasar Portapapeles se “pegan” en la IG los valores 11 y 10
11
10
en lugar de
10
11
mientras que los valores restantes 12 y 13 no se pegan en la cuadrícula y se genera un error:
Uncaught TypeError: Cannot read properties of null (reading '0')
at Object._getIdentity
El código es el siguiente:
function copyFromPastedInput(pastedInput) {
let rawRows = pastedInput.split("\n");
let valuesArray = rawRows[0].split("\t");
var contarFila=0;
let fila=[];
rawRows.forEach((rawRow, idx) => { //Recorre cada fila del arreglo(filas copiadas de Excel
if ( idx >= 0 ) {
let rowObject = {};
let values = rawRow.split("\t");
contarFila++;
valuesArray.forEach((header, idx1) => { //Extrae cada dato del arreglo y los deposita
//en fila
fila[idx1]=values[idx1];
});
CopiarEnIg(contarFila,fila);//Copia los datos del arreglo a la segunda columna de la IG
console.log(contarFila);
console.log(fila);
}
});
}
function CopiarEnIg(prowId,arreglo){
//Identify the particular interactive grid
var ig$ = apex.region("datosig").widget();
//here you have to change to use static ID of your region
var gridView = ig$.interactiveGrid("getViews").grid;
//Fetch the record for the particular rowId
var record = gridView.model.getRecord( prowId ); // find the record by id
//var record = model.getRecord(prowId);
gridView.model.setValue(record,"USUARIO_EMITE_ORDEN_ID", arreglo[1]);
}
Agradezco de antemano su ayuda.
Roberto Párraga Zambrano
Saludos