XLSX vs CSV: qué cambia
Antes de convertir, comprende qué conserva el CSV y qué descarta:
| Característica | XLSX | CSV |
|---|---|---|
| Valores de celda (texto, números) | Sí | Sí |
| Fórmulas | Sí (almacenadas) | No (solo valores calculados) |
| Formato (negrita, colores) | Sí | No |
| Varias hojas | Sí | No (una hoja por archivo) |
| Gráficos e imágenes | Sí | No |
| Tipos de datos (fechas, moneda) | Sí (celdas tipadas) | Solo texto plano |
| Tamaño del archivo (1000 filas) | ~50–200 KB | ~10–50 KB |
| Compatibilidad universal | Requiere Excel/lector | Cualquier editor de texto |
Si solo necesitas los datos sin formato — para importar en una base de datos, análisis de datos o compartir entre plataformas — CSV es la elección correcta. Si necesitas conservar el formato, las fórmulas o varias hojas, mantén el formato XLSX.
Método 1: Convertidor online (CleverUtils)
El método más rápido. No requiere instalar software y funciona en cualquier dispositivo con navegador.
- Ve a cleverutils.com/xlsx-to-csv
- Haz clic en Elegir archivo XLSX o arrastra y suelta tu hoja de cálculo
- Haz clic en Convertir
- Descarga el archivo CSV resultante
Ideal para: conversiones puntuales rápidas. Sin instalación. Los archivos se cifran durante la subida y se eliminan automáticamente en 2 horas.
Método 2: Microsoft Excel
Si ya tienes Excel instalado, puedes exportar directamente:
- Abre el archivo
.xlsxen Excel - Si el libro tiene varias hojas, haz clic en la pestaña de la hoja que quieres exportar
- Ve a Archivo → Guardar como (o Archivo → Guardar una copia en versiones recientes)
- En el desplegable “Tipo”, selecciona CSV (delimitado por comas) (*.csv)
- Elige la ubicación de guardado y haz clic en Guardar
- Excel advertirá que algunas características no son compatibles con CSV — haz clic en Sí para continuar
Excel ofrece varias variantes de CSV en el cuadro de diálogo Guardar como:
| Opción | Codificación | Delimitador | Ideal para |
|---|---|---|---|
| CSV (delimitado por comas) | Predeterminado del sistema (a menudo Windows-1252) | Coma | Datos en inglés (EE. UU./Reino Unido) |
| CSV UTF-8 (delimitado por comas) | UTF-8 con BOM | Coma | Caracteres internacionales |
| CSV (Macintosh) | Mac Roman | Coma | Apps heredadas de macOS |
| CSV (MS-DOS) | Página de códigos OEM/DOS | Coma | Programas heredados de DOS |
Consejo: Elige siempre CSV UTF-8 si tus datos contienen caracteres acentuados, texto CJK o cualquier símbolo no ASCII. El “CSV (delimitado por comas)” simple usa una codificación dependiente de la configuración regional que puede corromper caracteres especiales en otros sistemas.
Método 3: Google Sheets
Gratuito y disponible en cualquier plataforma con navegador:
- Abre sheets.google.com y sube tu archivo XLSX (Archivo → Abrir → Subir)
- Google Sheets importa el libro y conserva la mayor parte del formato visualmente
- Selecciona la pestaña de la hoja que quieres exportar
- Ve a Archivo → Descargar → Valores separados por comas (.csv)
- La hoja actual se descarga como un archivo
.csv
Google Sheets siempre exporta CSV en codificación UTF-8, que es la opción más segura para datos internacionales. El delimitador es siempre una coma, independientemente de la configuración regional.
Método 4: LibreOffice Calc
LibreOffice es gratuito, de código abierto y está disponible en Windows, macOS y Linux. Te ofrece el mayor control sobre la configuración de exportación a CSV.
- Abre el archivo
.xlsxen LibreOffice Calc - Ve a Archivo → Guardar como
- Selecciona Texto CSV (.csv) como formato
- Haz clic en Usar formato de texto CSV cuando se te solicite
- En el cuadro de diálogo de exportación, configura:
- Conjunto de caracteres: Unicode (UTF-8)
- Separador de campos: coma
,(o punto y coma, tabulador) - Separador de texto: comillas dobles
"
- Haz clic en Aceptar
Conversión por lotes desde la línea de comandos
LibreOffice admite el modo sin interfaz gráfica (headless), lo que lo hace ideal para el procesamiento por lotes:
# Convertir un solo archivo
libreoffice --headless --convert-to csv report.xlsx
# Convertir todos los archivos XLSX del directorio actual
libreoffice --headless --convert-to csv *.xlsx
# Especificar directorio de salida
libreoffice --headless --convert-to csv --outdir ./csv-output/ *.xlsx
Nota: El modo headless de LibreOffice solo exporta la primera hoja. Para libros con varias hojas, usa un script de Python (Método 5) o convierte cada hoja manualmente.
Método 5: Python (pandas)
Python con la librería pandas es la mejor opción para conversiones automatizadas, repetibles o por lotes. Gestiona libros con varias hojas, codificación y delimitadores personalizados de forma nativa.
Conversión básica
import pandas as pd
# Leer la primera hoja y guardar como CSV
df = pd.read_excel("report.xlsx")
df.to_csv("report.csv", index=False, encoding="utf-8-sig")
Convertir todas las hojas en archivos CSV separados
import pandas as pd
xlsx = pd.ExcelFile("workbook.xlsx")
for sheet_name in xlsx.sheet_names:
df = pd.read_excel(xlsx, sheet_name=sheet_name)
filename = f"{sheet_name}.csv"
df.to_csv(filename, index=False, encoding="utf-8-sig")
print(f"Guardado {filename}")
Conversión por lotes de múltiples archivos XLSX
import pandas as pd
from pathlib import Path
for xlsx_file in Path(".").glob("*.xlsx"):
df = pd.read_excel(xlsx_file)
csv_file = xlsx_file.with_suffix(".csv")
df.to_csv(csv_file, index=False, encoding="utf-8-sig")
print(f"{xlsx_file} → {csv_file}")
Instalación: pip install pandas openpyxl — el motor openpyxl es necesario para leer archivos .xlsx. pandas lo usa automáticamente cuando está instalado.
Método 6: Herramientas de línea de comandos
Para entornos de servidor, pipelines de CI/CD o flujos de trabajo con scripts donde no puedes abrir una interfaz gráfica.
ssconvert (Gnumeric)
Un conversor de hojas de cálculo ligero por línea de comandos incluido con Gnumeric:
# Instalar en Ubuntu/Debian
sudo apt install gnumeric
# Convertir un solo archivo
ssconvert report.xlsx report.csv
# Exportar todas las hojas (crea report.csv.0, report.csv.1, etc.)
ssconvert -S report.xlsx report.csv
# Conversión por lotes de todos los archivos XLSX
for f in *.xlsx; do ssconvert "$f" "${f%.xlsx}.csv"; done
csvkit (in2csv)
Un conjunto de herramientas basado en Python diseñado específicamente para operaciones con CSV:
# Instalar
pip install csvkit
# Convertir (primera hoja por defecto)
in2csv report.xlsx > report.csv
# Especificar una hoja por nombre
in2csv --sheet "Sales Q4" report.xlsx > sales-q4.csv
# Listar todos los nombres de hoja
in2csv --names report.xlsx
Problemas frecuentes y cómo resolverlos
Problemas de codificación (caracteres ilegibles)
El problema más habitual. Los caracteres acentuados (é, ü, ñ), el texto CJK o símbolos como € aparecen como é, ??? u otro texto ilegible.
Causa raíz: el CSV se guardó con una codificación pero se abrió con otra. Excel en Windows usa por defecto la página de códigos local (p. ej., Windows-1252 para Europa occidental), no UTF-8.
Solución:
- Guarda siempre como UTF-8 con BOM (marca de orden de bytes). El BOM indica a Excel y otras aplicaciones que el archivo está en UTF-8.
- En Python: usa
encoding="utf-8-sig"(UTF-8 con BOM) en lugar deencoding="utf-8" - Al abrir un CSV en Excel: usa el asistente de importación Datos → Desde texto/CSV, que te permite seleccionar la codificación antes de importar
Conflictos de delimitadores
Algunas configuraciones regionales europeas usan punto y coma (;) en lugar de comas como delimitador de CSV, porque la coma se usa como separador decimal en esas regiones (p. ej., 1.234,56 en alemán).
Síntomas: todos los datos aparecen en una sola columna al abrir en Excel, o los valores numéricos se dividen entre columnas.
Solución:
- Comprueba tu configuración regional: los usuarios de Windows con regiones en alemán, francés o italiano pueden necesitar punto y coma
- En Python:
df.to_csv("file.csv", sep=";")para salida delimitada por punto y coma - En LibreOffice: establece el delimitador de campos explícitamente durante la exportación
- Al importar: usa el asistente de importación de texto y especifica el delimitador correcto
Libros con varias hojas
El formato CSV admite exactamente una hoja por archivo. Al convertir un libro XLSX con varias hojas, la mayoría de las herramientas exportan solo la primera hoja (activa).
Solución:
- Exporta cada hoja por separado usando el script Python de varias hojas anterior
- Usa
ssconvert -S, que crea automáticamente archivos CSV numerados para cada hoja - En Excel o Google Sheets, cambia manualmente de pestaña y exporta cada una
Formato de fechas y números
Las fechas y los números pueden cambiar al convertir a CSV porque CSV no tiene concepto de tipos de datos. Una fecha como 2026-03-24 puede convertirse en 46108 (número de serie de Excel) o 3/24/2026 (formato dependiente de la región).
Solución:
- Formatea las columnas de fecha como texto en el formato deseado antes de exportar (p. ej.,
YYYY-MM-DDpara ISO 8601) - En Python:
df.to_csv(..., date_format="%Y-%m-%d") - Para números, elimina los separadores de miles y asegura un formato decimal consistente
¿Qué método debes usar?
| Método | Velocidad | Varias hojas | Control de codificación | Por lotes | Ideal para |
|---|---|---|---|---|---|
| CleverUtils | Instantáneo | Primera hoja | Auto (UTF-8) | No | Conversiones puntuales rápidas |
| Excel | Rápido | Manual por hoja | 4 opciones | No | Usuarios de escritorio con Excel instalado |
| Google Sheets | Medio | Manual por hoja | Solo UTF-8 | No | Chromebook / sin app de escritorio |
| LibreOffice | Rápido | Primera hoja (CLI) | Control total | Sí (CLI) | Usuarios de Linux, lotes por CLI |
| Python | Rápido | Todas las hojas | Control total | Sí | Desarrolladores, automatización |
| CLI (ssconvert) | Rápido | Todas las hojas (-S) | UTF-8 por defecto | Sí | Servidores, pipelines de CI/CD |