jueves, 29 de febrero de 2024

Usando Libreria Javascript para generar ficheros Excel

 

El año pasado tuve la oportunidad de hacer un desarrollo en la empresa en la que estoy colaborando,

que se necesitaba "Generar un fichero excel de tablas con datos con librería de javascript" que se tenían en la pagina frontal.

Esto me llevo a investigar un poco y encontré una muy buena opción y gratuita llamada Sheet.js

Y esta librería permite generar ficheros excel a partir de datos, ya sea en formato json, array, html string No fue fácil , después de varias pruebas pude lograr una versión funcional para esta aplicación,

a continuación te muestro los puntos mas importantes de esta :

1) si vas a manejar una tabla lo mejor es armar la tabla con las filas y columnas que vas a necesitar, esto lo puedes hacer atraves de los strings, y vas encadenando y armando un string con html

1.1) es importante anotar que si vas a manejar datos de tipo moneda, o decimales puedes usar la siguiente especificación de Sheet.js para que los datos ya vengan formateados al momento de descargar el fichero

<td data-z='#,##0.00_);\\(#,##0.00\\)'>

2) luego de construir el html string , tenemos que crear un div de manera virtual,

var eleme = document.createElement("div")

3) luego se pasa el html string al inner del elemento que hemos creado

eleme.innerHtml = html string

y se sube al body de la pagina --> document.body.appenchild(eleme)

4) Ahora viene la magia de SheetJS, en el html string decía que se debía crear una tabla y a esta le das un ID, con ese ID, localizamos la tabla que hemos creado virtualmente y que contiene datos,

algo así: 

var tabla = document,getElementByID("TablaID")

var wb = XLSX.utils.table_to_book(tabla) --> este código es muy importante ya que permite crear el WorkBook de Excel en memoria con los datos de la tabla ya formateada, esto ya lo hace SheetJS

5) Se elimina el elemento virtual del DOM de la pagina--> removeChild(eleme)

6) Y se da por escribir y descargar lo que tenemos en memoria WB

XLSX.writefile(wb, 'prueba.xlsx')

Con esto ya se tiene lo funcional para poder descargar un fichero en condiciones a partir de una tabla html 

Espero te sirva y que puedas seguir ideando mas funcionalidades con esta librería, vale la pena, luego de que se aprende ya es mas fácil controlar 

Estamos en contacto !




sábado, 9 de julio de 2022

Trabajando en C# con Ficheros Tipo PDF y Office - Limpiar Metadatos del Fichero (Sanitize)

 

Hace unos días me pidieron en el trabajo que realizara una prueba de concepto de un Upload de 

Ficheros, que permitiese limpiar los metadatos, ya que no se quiere que se muestre los metadatos del 

usuario que creo ese fichero.

Nota: Cuando hablamos de metadatos se refiere a las propiedades del fichero que contiene los datos


Estuve investigando un poco y me di cuenta (al menos para mi) de lo difícil que fue encontrar 

exactamente lo que quería,

Y lo que quería era que a partir de un fichero existente a subir se le pudiese limpiar o sanítizar los 

metadatos del fichero y permitir su descarga , obviamente de la forma mas fácil y rápida posible,

pensé que se podría subir el fichero original con metadatos y a partir de este crear un fichero, con el 

mismo contenido pero sin información en los metadatos, no sabes a veces cuantos dolores de cabeza me

trae hacer nuevos desarrollos pero es muy interesante y lo siento como un desafío, solo que hay que 

investigar un poco, la mayor parte de mi tiempo es investigar creo que uno 60% consume de mi 

tiempo, gracias a Dios tenemos Google , jejejeje.


Entonces vi una necesidad de exponer con algunos ejemplos como se debe realizar una limpieza de 

metadatos, ya que me fue muy difícil de encontrar en español y realizarlo y bueno es encontrar las 

librerias adecuadas y las paginas adecuadas donde te expliquen como hacerlo o dar una idea


Hablare primero de lo ultimo que hice y fue trabajar con la limpieza de metadatos en ficheros office 

(docx, xlsx, pptx), para trabajar con este tipo de ficheros, lo primero que encontré y que recomendaban 

era usar la librería DocumentFormat.OpenXML

Esta librería me permite crear ficheros office sin mayor esfuerzo, y tambien permite vaciar aquellas 

propiedades que no quiero que aparezcan con datos, entre otras muchas funcionalidades

Esta librería la puedes descargar de Nuget desde Visual Studio


Lo primero es declarar las librerias a usar:

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml;


Lo siguiente que hice fue esta porción de codigo, vale la pena aclarar que funciona bien, ya que no 

encontré una funcionalidad .Clear() o Sanitize() que limpiara todo automáticamente, en este caso me 

toco ir propiedad a propiedad y eso a las que pude encontrar.


Lo explicare un poco, se crea una instancia del documento y luego que ya esta abierto, con permisos

de modificación, se pueden vaciar las propiedades, al finalizar el using , lo que hará este objeto en el 

documento es que le hará un .Save() automáticamente y de esta forma se podrá tener un fichero limpio 

de metadatos

Ejemplo Documentos Word:

using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(rutaAbsoluta, true))

                    {

                        wordDoc.PackageProperties.Creator = ""; // Autor

                        wordDoc.PackageProperties.Created = null; //Fecha de Creación

                        wordDoc.PackageProperties.Description = "";

                        wordDoc.PackageProperties.Version = ""; //Version del fichero

                        wordDoc.PackageProperties.Title = ""; //Titulo del fichero

                        wordDoc.PackageProperties.ContentStatus = "";

                        wordDoc.PackageProperties.ContentType = "";

                        wordDoc.PackageProperties.Category = "";

                        wordDoc.PackageProperties.Identifier = "";

                        wordDoc.PackageProperties.Keywords = "";

                        wordDoc.PackageProperties.Language = "";//Idioma del fichero

                        wordDoc.PackageProperties.LastModifiedBy = "";

                        wordDoc.PackageProperties.LastPrinted = null; //Fecha de ultima impresión

                        wordDoc.PackageProperties.Modified = null;

                        wordDoc.PackageProperties.Subject = "";

                        wordDoc.PackageProperties.Revision = ""; //Numero de Revisión

                    }

Para el caso de Excel y Power Point, las propiedades son las mismas, lo único que cambia es el objeto 

con el que se usa la apertura del fichero existente 

Excel -> SpreadsheetDocument package = SpreadsheetDocument.Open(rutaAbsoluta, true)

Power Point -> PresentationDocument presDoc = PresentationDocument.Open(rutaAbsoluta, true)


NOTA IMPORTANTE: de esta manera podrás vaciar los metadatos mas comunes , como lo 

mostramos en el ejemplo


Tambien encontré otra Librería que podría ser útil, lo único que es una librería de pago, y cuando haces 

el Sanitize del fichero, te lo crea , pero te genera un error, lo que hice fue gestionar ese error, para que 

al menos pudiese funcionar, pero no conozco cuantos ficheros dejará crear o sanitizar

La librería se llama GroupsDocs.Metadata , la encontré en GitHub, les dejo el enlace para que puedan 

ver un poco mas de este proyecto 


Aquí les dejo una porción del codigo:

 using (Metadata metadata = new Metadata(rutaAbsoluta))

                    {

                        var affected = metadata.Sanitize();// esta es la que hace todo el poder (limpia todo)

                        Console.WriteLine("Properties removed: {0}", affected);

                        metadata.Save(rutaAbsoluta2);

                    }


 Si no la encuentras puedes ir a la linea de comandos de Nuget en Visual Studio y ejecutas el siguiente comando: Install-Package GroupDocs.Metadata


Espero este Post haya servido para traer un poco de claridad en cuanto al tema, espero te sirva para tus 

desarrollos y que estas funcionalidades puedan estar en tu biblioteca de codigo fuente


Si te sirvió escribe en los comentarios abajo y cuéntanos tu experiencia, y no se te olvide darle like y 

compartir, estamos en contacto!

domingo, 23 de febrero de 2020

Gundam Tamaño Real Oh Yeah!!!!!

Cómo nos gusta tanto la ciencia ficción, hoy traemos una noticia sacada de un anime, expertos 

japoneses en robótica están desarrollando un robot de tipo Gundam wing a escala real, si Gundam el 

de los animes, es impresionante poder ver estos tipos de proyectos en esta época, algo que era casi 

imposible años atrás, hoy lo están construyendo en Japón, no tendrá armamento eso sí, según 

comentan, y este robot podrá caminar , wow, y todo porque se mostrará en los juegos Olímpicos de 

Tokyo de 2020, esperemos está impresionante creación de la robótica e ingeniería, les dejo una foto 

y un vídeo espero te guste y estamos en contacto




Esta noticia fue tomada de Fayer Wayer

Que es StarLink y para que Sirve?


Revisando unas noticias de tecnología en estas ultimas semanas en internet me encontré con esta 

nota, en donde intervienen satélites, Elon Musk, el fundador de Tesla y SpaceX, el espacio, la tierra, 

bueno, en fin , se está trabajando en una tecnología que servirá para proveer internet desde los 

satélites, muchos satélites!!!!, a todo el planeta tierra sin importar donde estemos, cómo 

sabrán actualmente tenemos fibra óptica gracias a que está cableado el mundo atraves del lecho 

marino para unir los continentes , pero Elon Musk quiere proveer una Internet especial, mucho más 

rápida (aparentemente) y usando satélites con su tecnología SnapDragon, vale la pena mirar que está 

tratando de hacer, esperemos que sea de beneficio para toda la humanidad,ya que al parecer seria 

mas económica que la internet actual, por lo pronto es la información que tengo, les estaremos 

comentando mas al respecto, estamos en contacto!


viernes, 27 de diciembre de 2019

Feliz Navidad y Prospero Año 2020



Hola a tod@s , después de un largo tiempo, casi dos años sin escribir, nuevamente por estos lados

retomando el blog, este 2020 sera mucho mejor, tratare de publicar nuevos artículos de tecnología y

demás, tengo nuevos artículos que aun no los he publicado, esperando que les guste, por lo pronto

espero que tengan una feliz navidad y un prospero año nuevo 2020 cargado de muchas bendiciones

un abrazo

PD: les dejo mi tarjeta navideña




martes, 7 de marzo de 2017

Una Casa fue construida con una Impresora 3D!!!!



Hola a todos los lectores que ven este blog de noticias de tecnología , estaba viendo unas noticias de tecnología en construcción de casas, y es increíble lo que me he topado, en la pagina de Engadget,
una startup de San Francisco, ha comenzado a construir una casa con una impresora 3D, que????? como dices???, si con una impresora 3D, donde no hay tinta ni plástico, usan un componente de cemento polimero, que permite construir la casa en alrededor de 24 hrs, Waoooooo, que fuerte , me ha interesado mucho pues a pesar de ser una casa pequeña alrededor de los 32 mts2, es una casa multifuncional cuenta con un salón, una habitación, baño, etc, también su costo para construirla es de 10 mil dolares aprox, no se uds pero me parece que es una excelente idea, le permite a uno comenzar a visionar y lo que la tecnología hace por nosotros es increíble, algo que me pareció interesante es que esta empresa Apis Cor, es la que ha patentado esta tecnología , y es la primera casa en ser impresa de esta forma , así que hay les dejo que vuelen por la imaginación, les comparto el vídeo gracias a Engadget el cual lo ha publicado en su pagina,

asi que que esperas por ver el vídeo da click en el vídeo para verlo, esta en ingles así que paciencia ;)


lunes, 30 de enero de 2017

La Enfermedad del Siglo XXI: Adiccion por las Redes Sociales


Hola a tod@s, como les he estado comentando estoy buscando temáticas que nos permitan ver la otra cara de la moneda en el mundo de la tecnología, hemos visto que hoy en día todo es atraves de internet, todo es digital, tenemos una gran cantidad de aplicaciones móviles que nos permiten consultar, verificar, interinar, en fin un sin numero de posibilidades de obtener la información,  pero lo mas interesante no es eso sino es la capacidad que tenemos de estar pegados a los móviles, los cuales como ya es sabido nos quitan mucho de nuestro preciado tiempo, es como cuando queremos ver televisión todo el fin de semana, antes de seguir aclaro que no estoy en contra de nadie pero cada quien que haga lo que quiera solo estoy dando mi punto de vista acerca de este tema

Hoy por hoy las aplicaciones de redes sociales nos consumen mucho tiempo, queremos estar con la información mas actual y precisa posible, este actuar nos va separando gradualmente de nuestra familia, actividades, trabajo , escuela,  etc.

Y es que la adicción a las redes sociales es lo ultimo que ha salido en la noticias, y es que es cierto , queremos aparentar un estado que no es, queremos ser importantes , queremos que nos reconozcan, ganar dinero a través de estas,y lo que termina pasando es la crisis de la red social mas importante : La familia 

Cabe destacar que en si no es el móvil, no son las redes sociales el problema, cuando no podemos controlar esos impulsos es cuando viene el problema, así que chic@s tenemos que poner limites, leer mas el papel, que el digital, el poder liberar nuestra mente en un espacio abierto, pero siendo consciente de estar conectados con la naturaleza, con las personas, en tiempo real , en vivo, escuchándoles, e interactuando con todos 

Si te sientes identificado con este post, debes hacer un alto en el camino, pensar lo que estas haciendo, pensar que con esto te haces daño a ti y a los que te rodean, y por supuesto comienza a implementar el plan Cero Red Social por un día (al menos), es bueno desconectarse un rato, eso lo decides tu, pues de ti depende tu futuro, es mi consejo en el día de hoy para ti que la pases super bien !!!!!

Usando Libreria Javascript para generar ficheros Excel

  El año pasado tuve la oportunidad de hacer un desarrollo en la empresa en la que estoy colaborando, que se necesitaba " Generar un fi...