Me resultó algo difícil escribir el título de este artículo ya que no creo que haga justicia a lo que el código, que voy a compartir, hace.
Estoy trabajando para una agencia marítima en donde muchos de los datos (de barcos y cruceros) nos llegan en hojas de cálculo (Excel, de ahora en más). Luego nos toca crear ooootro Excel a partir de la información del archivo original para repartir a distintos departamentos, agencias y/o entidades según corresponda pero con distintas columnas.
Hasta ahora venimos haciendo todo este trabajo de manera manual, y la idea es evitar el error humano en un mal copiar/pegar.
Buscando librerías me encuentro con que SheetJS permite trabajar con archivos Excel en el lado del cliente (frontend) y luego de ver un par de demos decido probarlo.
La idea, básicamente, es tener un archivo Excel "matriz". Luego quitar muchas de esas columnas y crear un nuevo archivo con ciertas columnas, el cual enviaremos a una agencia. Usar el Excel "matriz" para luego crear otro archivo Excel, pero en esta oportunidad para una entidad gubernamental. Y así crear la cantidad de Excel necesarios con información para una persona/agencia/empresa en particular...
Creo que esta explicación no ayuda mucho. Vamos mejor a un ejemplo visual y simple.
Tenemos un Excel con la siguiente información:
Creamos un formulario HTML con algunas opciones para que haga lo siguiente:
Al subir el Excel original al formulario y elegir las distintas opciones, nos descargará el archivo final listo para ser enviado a nuestros clientes:
Bueno, basta de charla.
Creé el siguiente codepen 100% funcional y con sus comentarios (en inglés).
Espero aliviane el complejo camino sinuoso de filtrar y pasar columnas de un Excel a otro y los ayude.
Mi aporte al mundo.
¡Saludos!