encoding abrir - Excel a CSV con codificación UTF8




utf-8 convertir (25)

Sé que esta es una pregunta antigua, pero encontré esta pregunta mientras luchaba con los mismos problemas que el OP.

No habiendo encontrado ninguna de las soluciones ofrecidas como una opción viable, me propuse descubrir si hay una manera de hacer esto usando Excel.

Afortunadamente, he encontrado que el problema de la pérdida de caracteres solo ocurre (en mi caso) cuando se guarda desde el formato xlsx al formato csv. Intenté guardar el archivo xlsx en xls primero, luego en csv. En realidad funcionó.

Por favor, pruébalo y ve si funciona para ti. Buena suerte.

Tengo un archivo de Excel que tiene algunos caracteres españoles (tildes, etc.) que necesito convertir a un archivo CSV para usar como un archivo de importación. Sin embargo, cuando hago Guardar como CSV, maneja los caracteres "especiales" en español que no son caracteres ASCII. También parece hacer esto con las comillas izquierda y derecha y los guiones largos que parecen provenir del usuario original que crea el archivo Excel en Mac.

Ya que CSV es solo un archivo de texto, estoy seguro de que puede manejar una codificación UTF8, así que supongo que es una limitación de Excel, pero estoy buscando una forma de pasar de Excel a CSV y mantener los caracteres no ASCII intacto.


Manera más fácil: sin necesidad de Open Office y Google Docs.

  1. Guarde su archivo como "archivo de texto Unicode";
  2. ahora tienes un archivo de texto Unicode
  3. ábralo con "notepad" y "Guárdelo" seleccionando "utf-8" u otra página de códigos que desee
  4. renombrar la extensión de archivo de "txt" a "csv"

¡¡¡No lo abras con Ms-office de todos modos !!! Ahora tienes un archivo CSV delimitado por tabulaciones.


Suponiendo un entorno de Windows, guarde y trabaje con el archivo como de costumbre en Excel, pero luego abra el archivo de Excel guardado en Gnome Gnumeric (gratis). Guarde la hoja de cálculo de Gnome Gnumeric como CSV que, para mí de todos modos, la guarda como CSV de UTF-8.


También he encontrado el mismo problema pero hay una solución fácil para esto.

  1. Abra su archivo xlsx en Excel 2016 o superior.
  2. En "Guardar como" elija esta opción: "(CSV UTF-8 (delimitado por comas) * .csv)"

Funciona perfectamente y se genera un archivo csv que se puede importar en cualquier software. Importé este archivo csv en mi base de datos SQLITE y funciona perfectamente con todos los caracteres intactos de Unicode.


Puede usar el comando iconv en Unix (también disponible en Windows como libiconv ).

Después de guardar como CSV bajo Excel en la línea de comando poner:

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(Recuerde reemplazar el cp1250 con su codificación).

Funciona rápido y excelente para archivos grandes como la base de datos de códigos postales, que no se pueden importar a GoogleDocs (límite de 400,000 celdas).


Tengo el mismo problema y me encuentro con this complemento, y funciona perfectamente bien en Excel 2013 además de Excel 2007 y 2010, por lo que se menciona.


otra solución es abrir el archivo por winword y guardarlo como txt y luego volver a abrirlo por Excel y funcionará ISA



Una segunda opción para "nevets1219" es abrir su archivo CSV en Notepad ++ y hacer una conversión a ANSI.

Elija en el menú superior: Codificación -> Convertir a Ansi


  1. Guarde el archivo xls (archivo de Excel) como texto Unicode => el archivo se guardará en formato de texto (.txt)

  2. Cambie el formato de .txt a .csv (cambie el nombre del archivo de XYX.txt a XYX.csv


¿Qué pasa con el uso de Powershell.

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8

Una solución simple es usar Google Spreadsheet. Pegue (valore solo si tiene fórmulas complejas) o importe la hoja y descargue CSV. Acabo de probar algunos caracteres y funciona bastante bien.

NOTA: Google Sheets tiene limitaciones al importar. Ver here

NOTA: Tenga cuidado con los datos confidenciales con Google Sheets.

EDITAR: Otra alternativa : básicamente usan macro VB o complementos para forzar el guardado como UTF8. No he probado ninguna de estas soluciones pero parecen razonables.


  1. Guarde la hoja de Excel como "Texto Unicode (.txt)". La buena noticia es que todos los caracteres internacionales están en UTF16 (nota, no en UTF8). Sin embargo, el nuevo archivo "* .txt" está delimitado por TAB, no delimitado por comas, y por lo tanto no es un CSV verdadero.

  2. (opcional) A menos que pueda usar un archivo delimitado por TAB para importar, use su editor de texto favorito y reemplace los caracteres de TAB con comas ",".

  3. Importe su archivo * .txt en la aplicación de destino. Asegúrese de que puede aceptar el formato UTF16.

Si UTF-16 se ha implementado correctamente con soporte para puntos de código que no son BMP, puede convertir un archivo UTF-16 a UTF-8 sin perder información. Te lo dejo a ti para encontrar tu método favorito de hacerlo.

Utilizo este procedimiento para importar datos de Excel a Moodle.


La única "manera fácil" de hacer esto es la siguiente. Primero, comprenda que existe una diferencia entre lo que se muestra y lo que se mantiene oculto en el archivo .csv de Excel.

(1) Abra un archivo de Excel donde tenga la información (.xls, .xlsx)

(2) En Excel, elija "CSV (delimitado por comas) (* .csv) como el tipo de archivo y guárdelo como ese tipo.

(3) En NOTEPAD (que se encuentra en "Programas" y luego en Accesorios en el menú Inicio), abra el archivo .csv guardado en el Bloc de notas

(4) Luego elija -> Guardar como ... y en la parte inferior del cuadro "guardar como", hay un cuadro de selección etiquetado como "Codificación". Seleccione UTF-8 (NO use ANSI o perderá todos los acentos, etc.). Después de seleccionar UTF-8, guarde el archivo en un nombre de archivo ligeramente diferente al original.

Este archivo está en UTF-8 y conserva todos los caracteres y acentos y se puede importar, por ejemplo, a MySQL y otros programas de bases de datos.

Esta respuesta es tomada de este foro .


Otro que he encontrado útil: " Números " permite la configuración de codificación al guardar como CSV.


Excel normalmente guarda un archivo csv como codificación ANSI en lugar de utf8.

Una opción para corregir el archivo es usar Notepad o Notepad ++:

  1. Abra el archivo .csv con Notepad o Notepad ++.
  2. Copia los contenidos al portapapeles de tu computadora.
  3. Eliminar los contenidos del archivo.
  4. Cambia la codificación del archivo a utf8.
  5. Vuelve a pegar el contenido desde el portapapeles.
  6. Guarda el archivo.

Para aquellos que buscan una solución completamente programática (o al menos del lado del servidor), he tenido un gran éxito al usar la herramienta xls2csv de catdoc.

Instale catdoc:

apt-get install catdoc

Hacer la conversión:

xls2csv -d utf-8 file.xls > file-utf-8.csv 

Esto está ardiendo rápido.

Tenga en cuenta que es importante que incluya el indicador -d utf-8 , de lo contrario, codificará la salida en la codificación de cp1252 predeterminada y corre el riesgo de perder información.

Tenga en cuenta que xls2csv también funciona solo con archivos .xls , no funciona con archivos .xlsx .


He escrito un pequeño script de Python que puede exportar hojas de trabajo en UTF-8.

Solo tiene que proporcionar el archivo de Excel como primer parámetro seguido de las hojas que desea exportar. Si no proporciona las hojas, la secuencia de comandos exportará todas las hojas de trabajo que están presentes en el archivo de Excel.

#!/usr/bin/env python

# export data sheets from xlsx to csv

from openpyxl import load_workbook
import csv
from os import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def get_all_sheets(excel_file):
    sheets = []
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    all_worksheets = workbook.get_sheet_names()
    for worksheet_name in all_worksheets:
        sheets.append(worksheet_name)
    return sheets

def csv_from_excel(excel_file, sheets):
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    for worksheet_name in sheets:
        print("Export " + worksheet_name + " ...")

        try:
            worksheet = workbook.get_sheet_by_name(worksheet_name)
        except KeyError:
            print("Could not find " + worksheet_name)
            sys.exit(1)

        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
        for row in worksheet.iter_rows():
            lrow = []
            for cell in row:
                lrow.append(cell.value)
            wr.writerow(lrow)
        print(" ... done")
    your_csv_file.close()

if not 2 <= len(sys.argv) <= 3:
    print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
    sys.exit(1)
else:
    sheets = []
    if len(sys.argv) == 3:
        sheets = list(sys.argv[2].split(','))
    else:
        sheets = get_all_sheets(sys.argv[1])
    assert(sheets != None and len(sheets) > 0)
    csv_from_excel(sys.argv[1], sheets)

Guardar cuadro de diálogo> Botón Herramientas> Opciones web> Ficha Codificación


"nevets1219" tiene razón sobre los documentos de Google, sin embargo, si simplemente "importa" el archivo, a menudo no lo convierte a UTF-8.

Pero si importa el CSV en una hoja de cálculo de Google existente, se convierte a UTF-8.

Aquí hay una receta:

  • En la pantalla principal de Docs (o Drive) haga clic en el botón "Crear" y elija "Hoja de cálculo"
  • Desde el menú "Archivo" elija "Importar"
  • Haga clic en "Elegir archivo"
  • Elija "Reemplazar hoja de cálculo"
  • Elige el personaje que estés usando como separador
  • Haga clic en "Importar"
  • Desde el menú "Archivo", elija "Descargar como" -> CSV (hoja actual)

El archivo resultante estará en UTF-8.


Puede hacer esto en una máquina moderna de Windows sin software de terceros. Este método es confiable y manejará datos que incluyen comillas entre comillas, caracteres de tabulación, caracteres CJK, etc.

1. Guardar desde Excel

En Excel, guarde los datos en file.txt utilizando el tipo de Unicode Text (*.txt) .

2. Inicia PowerShell

Ejecute powershell desde el menú Inicio.

3. Cargue el archivo en PowerShell

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. Guardar los datos como CSV

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

Por gracioso que parezca, la forma más fácil que encontré de guardar mi hoja de cálculo de 180MB en un archivo UTF8 CSV fue seleccionar las celdas en Excel, copiarlas y pegar el contenido del portapapeles en SublimeText.


Microsoft Excel tiene una opción para exportar hojas de cálculo utilizando la codificación Unicode. Vea la siguiente captura de pantalla.


Bajo Excel 2016, tenemos una opción de exportación CSV dedicada al formato UTF-8.


Los archivos UTF que contienen una lista de materiales provocarán que Excel trate nuevas líneas literalmente, incluso en ese campo está rodeado por comillas. (Probado Excel 2008 Mac)

La solución es hacer que cualquier línea nueva sea un retorno de carro (CHR 13) en lugar de un avance de línea.







excel encoding csv utf-8