lunes, 1 de agosto de 2022

Metodo Push en Java

 El método push nos ayuda en la construcción de arreglo en JavaScript a diferencia del desarrollo en java, este método aparte de agregar elementos al arreglo incrementa en 1 la longitud del mismo. sin embargo en Java no existe tal método así que es necesario construirlo para ello vamos al código.

Para este ejemplo será un código push para un arreglo de tipo String.

Sin mas les dejo aquí el código.
/**
     * Autor<b>innovania.blogspot.com</b><br />
     * <br />
     * Metodo <b>push</b>: permite agregar un elemento al arreglo ya existente<br />
     * @param arr arreglo que se esta agregando el elemento value<br />
     * @param value valor a agregar <br />
     * @return nuevo arreglo con elemento value en la posicion final del arreglo
     */
public String[] push(String[] arr,String value){
    String[] temp = new String[arr.length];
    System.arraycopy(arr, 0, temp, 0, arr.length);
    arr= new String[temp.length+1];
    System.arraycopy(temp, 0, arr, 0, temp.length);
    arr[temp.length]=value;
    return arr;
}

Explicación del código. 

Comienza creando un arreglo igualando la longitud al arreglo que esta entrando.

Copia el arreglo entrante al temporal.

Construye un nuevo arreglo tomando la longitud del arreglo temporal mas 1.

Copia el contenido del arreglo temporal en el nuevo arreglo.

Agrega el valor del push en la ultima posición de ahora nuevo arreglo.

Retorna el nuevo arreglo con el nuevo valor agregado.


Ya por ultimo queda el llamado. 


    IncrementArray app = new IncrementArray();
        String[] a ={"uno","dos","tres"};
        a=app.push(a,"cuatro");
        a=app.push(a,"cinco");
        for (String a1 : a) {
            System.out.println(a1);
        }
Sin mas por el momento me despido, espero les ayude, si tienes dudas deja tu comentario y con gusto resolvemos juntos las dudas.


jueves, 28 de julio de 2022

Exportar Imagen en Excel JS

 Hola a todos, en este momento aremos un archivo de excel a partir de la informacion en un arreglo de propiedades, entre estas propiedades estará una constante con images en base64.
Para ello utilizaremos las librerias de exceljs.js y FileSaver.js puedes acceder a estas librerías en las siguientes direcciones.


<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.21.15/plugins/export/libs/FileSaver.js/FileSaver.min.js" type="text/javascript"> </script>
 <script crossorigin="anonymous" integrity="sha512-UnrKxsCMN9hFk7M56t4I4ckB4N/2HHi0w/7+B/1JsXIX3DmyBcsGpT3/BsuZMZf+6mAr0vP81syWtfynHJ69JA==" referrerpolicy="no-referrer" src="https://cdnjs.cloudflare.com/ajax/libs/exceljs/4.3.0/exceljs.min.js"> </script>


A partir de aquí lo que sigue es preparar nuestra información.

  var arreglo = [{ name: "Jane Doe",foto:'data:image/png;base64,/9j/4QAYRXhpZgAAS...'},{ name: "John Doe",foto:'data:image/png;base64,/9j/4QAYRXhpZgAAS...'}];
 var cols= [{field:'name',title:'Nombre'},{field:'foto',title:'IMAGEN'}];
  
Una vez que tenemos el insumo creamos nuestra función.
  async function exportFile(arry,cols,fileName){
     var workbook = new ExcelJS.Workbook();
     workbook.creator = 'inovania.blogspot.com';
     workbook.lastModifiedBy = 'inovania.blogspot.com';
     workbook.created = new Date();
     var worksheet =  workbook.addWorksheet('Sheet 1');
     var grd={
          columns:cols,
          data:array
     };
     var arrRow=[];
     grd.columns.map((e,i) => {
          arrRow.push(e.title);
     });
     worksheet.addRow(arrRow);
     for(var e=0;e<grd.data.length;e++){
          var arrDt = [];
          var logo;
          for(var x=0;x<grd.columns.length;x++){
               var c = grd.columns[x].field;
               if(x==0){
                    logo = workbook.addImage({
                         base64: grd.data[e][c],
                         extension: 'jpg',
                    });
                    arrDt.push("");
               }else{
                    arrDt.push(grd.data[e][c]);
               }
          }
          worksheet.addRow(arrDt);
          worksheet.addImage(logo, ('A'+(e+2)+":"+"A"+(e+2)));
     }
     await workbook.xlsx.writeBuffer()
          .then(buffer => saveAs(new Blob([buffer]),fileName+".xlsx"))
          .catch(err => console.log(err) );
};
  
Con esto solo nos queda el llamado el cual queda de la siguiente manera

  exportFile(arreglo,cols,"archivoInnovania");
De esta manera queda nuestro objeto capas de exportar imagenes en base64 en un archivo de excel.

Cabe mencionar que la función worksheet.addImage(img,rango); ocupa dos parámetros el primero es la imagen y el segundo parámetro es un rango de celdas, en este caso lo deje en la misma celda, pasándole como rango desde la celda ( A1 hasta la celda A1) A1:A1, simulando que este será un rango de celdas.


Quedo en espera de sus comentarios, hasta la proxima.

domingo, 8 de mayo de 2022

Creación y lectura de archivo desde java

 Hola a todos, está es una entrada mas al respecto en esta nota, explicare como crear y leer un archivo desde java.

Primero que nada una disculpa por la demora de mis entradas. Siguiendo con lo que nos truje, vamos a nuestro editor de mejor preferencia, en mi caso usare netbeans.

Para ello creamos un nuevo documento que será nuestra toma de decisiones.

Principal.java


package com.diving.inovania;

import java.io.FileWriter;
import java.io.IOException;

/**
 *
 * @author inovania.blogspot.com
 */
public class Principal {
    public static void main(String[] args) {
        Principal app = new Principal();
        app.createFile();
    }
}

El código encargado de la creación y escritura del documento queda de la siguiente manera

public void createFile() {
   FileWriter wr;
     try {
         wr = new FileWriter(path+"filename.txt");
         wr.write("Este es un archivo creado desde java\n");
         wr.write("Continua en\n");
         wr.write("https://inovania.blogspot.com");
         wr.close();
     } catch (IOException e) {
         System.out.println("Ocurrio un error: " + e.getMessage());
     }
}

Pero no siempre estaremos creando y sobre escribiendo el mismo documento. Es decir hay ocasiones en que se requiere abrir un archivo leerlo y agregar algo nuevo o simplemente leerlo. Para ello el siguiente metodo.

public String readFile() {
    Scanner sc;
        StringBuilder sb = new StringBuilder();
    try {
        File f = new File("E:\\Oscar\\blog\\filename.txt");
        sc = new Scanner(f);
        while (sc.hasNextLine()) {
            sb.append(sc.nextLine()).append("\n");
        }
        sc.close();
    } catch (FileNotFoundException e) {
        System.err.println("Erro al leer el archivo: " + e.getMessage());
    }
    return sb.toString();
}

De esta manera tenemos tanto la lectura como escritura del mismo archivo.

Sin mas por el momento me despido, no sin antes pedirles sus comentarios. hasta la proxima.