Skip to content

anton-team/csv-formatter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSV Data Formatter

Este proyecto es una herramienta en TypeScript para procesar y formatear datos de archivos CSV. Está diseñado para ser altamente configurable y reutilizable, permitiendo el procesamiento de diferentes tipos de archivos CSV con distintas estructuras.

Características

  • Procesamiento de archivos CSV con separador personalizable
  • Sistema de formateo modular y extensible
  • Validación de campos requeridos
  • Manejo de errores robusto
  • Generación de archivo CSV formateado
  • Logging detallado del proceso
  • Configuración flexible para diferentes tipos de CSV
  • Soporte para múltiples codificaciones

Estructura del Proyecto

.
├── data/               # Directorio para archivos CSV
│   └── raw_data.csv   # Archivo CSV original (no incluido en el repositorio)
├── src/               # Código fuente
│   ├── config/       # Configuraciones
│   │   └── default.ts
│   ├── formatters/   # Formateadores reutilizables
│   │   └── index.ts
│   ├── services/     # Servicios
│   │   └── CsvFormatter.ts
│   ├── types/        # Tipos y interfaces
│   │   └── index.ts
│   └── index.ts      # Punto de entrada
├── tsconfig.json     # Configuración de TypeScript
└── package.json      # Dependencias del proyecto

Requisitos

  • Node.js
  • npm/yarn
  • TypeScript

Instalación

  1. Clonar el repositorio
  2. Instalar dependencias:
npm install

Configuración

1. Formato del Archivo CSV de Entrada

El archivo CSV de entrada (raw_data.csv) debe estar:

  • En la carpeta data/
  • Con codificación UTF-8
  • Usando punto y coma (;) como delimitador
  • Con las columnas especificadas en la configuración

2. Configuración del Formateador

El proyecto utiliza un sistema de configuración flexible que permite:

  • Definir columnas y sus formateadores
  • Especificar campos requeridos
  • Configurar delimitadores de entrada y salida
  • Establecer codificaciones

Ejemplo de configuración:

const config = {
    inputConfig: {
        delimiter: ';',
        encoding: 'utf8',
        quote: '"',
        escape: '"'
    },
    outputConfig: {
        delimiter: ',',
        encoding: 'utf8',
        quote: '"',
        escape: '"'
    },
    columns: [
        createColumnConfig('ID', normalizeText, true),
        createColumnConfig('NOMBRE', formatText, true),
        createColumnConfig('EMAIL', formatEmail, true)
    ]
};

Uso

Uso Básico

  1. Colocar el archivo CSV original en ./data/raw_data.csv
  2. Ejecutar el script:
npx ts-node src/index.ts
  1. El archivo formateado se generará en ./data/data.csv

Uso Personalizado

import { CsvFormatter } from './services/CsvFormatter';
import { createColumnConfig } from './formatters';

// Crear configuración personalizada
const customConfig = {
    inputConfig: {
        delimiter: ';',
        encoding: 'utf8',
        quote: '"',
        escape: '"'
    },
    outputConfig: {
        delimiter: ',',
        encoding: 'utf8',
        quote: '"',
        escape: '"'
    },
    columns: [
        // Definir tus propias columnas y formateadores
    ]
};

// Crear instancia del formateador
const formatter = new CsvFormatter(customConfig);

// Procesar archivo
await formatter.processFile('input.csv', 'output.csv');

Formateadores Disponibles

Texto General

  • normalizeText: Normaliza caracteres especiales y elimina diacríticos
  • formatText: Limpia espacios y caracteres no imprimibles

Correo Electrónico

  • formatEmail: Formatea correos electrónicos (minúsculas, sin espacios)

Teléfono

  • formatPhoneNumber: Formatea números de teléfono al formato internacional

URL

  • formatUrl: Normaliza URLs (https://, sin www)

Crear Nuevos Formateadores

Puedes crear tus propios formateadores siguiendo el patrón:

const miFormateador = (value: string): string => {
    if (!value) return '';
    // Tu lógica de formateo aquí
    return value;
};

Manejo de Errores

El sistema incluye:

  • Validación de campos requeridos
  • Manejo de errores de lectura/escritura
  • Logging detallado
  • Resultados estructurados

Dependencias

  • csv-parse: ^3.2.0
  • csv-stringify: ^6.4.5
  • typescript: ^5.8.2
  • ts-node: ^10.9.2
  • @types/node: ^22.13.17

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published