Skip to Main Content

Español

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Copiar datos desde Excel a APEX IG con JS

rober584812Mar 19 2023

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

This post has been answered by rober584812 on Mar 19 2023
Jump to Answer
Comments
Post Details
Added on Mar 19 2023
1 comment
339 views