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.
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.
No hay comentarios:
Publicar un comentario