¿Cómo hago para que Excel importe un archivo CSV con comas en algunos de los campos de contenido?

13

¿Cómo consigo que Excel importe mi archivo CSV ?

Archivo

Tengo un archivo que dice ser CSV. Contiene 10 campos, todos los cuales están rodeados por comillas dobles (sí, incluso las fechas y los números). 2 o 3 de estos campos contienen comas . Pero los datos en estos campos también están rodeados de comillas.

Problema

Cuando trato de abrir este archivo, Excel ignora por completo las comillas y asume que son parte de los datos.

Por lo tanto, divide los campos que contienen comas en varias columnas.

Esto es malo, al menos para mí.

Datos de ejemplo

"20051", "", "30 de septiembre de 2009 02:53:23", "SOMETEXT", "", "5000", "2000000", "2008 - 99999 - -99999, 2008 - unk - unk", "191 - SOMETEXT - SOMETEXT, 192 - SOMETEXT - SOMETEXT, 193 - SOMETEXT - SOMETEXT, 194 - SOMETEXT - SOMETEXT, 195 - SOMETEXT - SOMETEXT, 196 - SOMETEXT - SOMETEXT "," 45 - SOMETEXT, SOMETEXT - SOMETEXT, - SOMETEXT - SOMETEXT, 141 - SOMETEXT - SOMETEXT "
"20052", "SOMETEXT", "08 de septiembre de 2009 07:56:50", "SOMETEXT", "", "50000", "5000000", "2007 - 99999 - 99999", "146 - SOMETEXT - SOMETEXT, 145 - SOMETEXT - SOMETEXT, 147 - SOMETEXT - SOMETEXT, 148 - SOMETEXT - SOMETEXT "," 103 - SOMETEXT - SOMETEXT, 1131 - SOMETEXT - SOMETEXT "

Que he probado

He utilizado la función de importación para especificar delimitadores y demás, pero esto no parece ayudar.

He intentado cambiar "Delimitador de texto" de una comilla doble a "{none}" y viceversa. Esto parece afectar solo a la primera columna. Esto sería razonable si fuera posible hacer clic en las otras columnas y aplicar esta configuración a cada una. Pero este no es el caso, y parece que está destinado a funcionar en columnas.

¿Qué más puedo probar?

Rory Becker
fuente
1
¿Qué versión de Excel? ¿Y está completamente parcheado?
harrymc
He visto esto en 2002 y 2007. No estoy seguro sobre 2007, pero estoy bastante seguro de que 2002 estaba completamente actualizado
Rory Becker
¿Puedes proporcionar un enlace al CSV? ¿O una versión reducida que demuestre el problema?
Josh Comley, el
Ejemplo de datos añadido por encima de
Rory Becker

Respuestas:

13

Acabo de probar una prueba rápida que replica tu problema.

Creé un CSV de 1 línea en Word (que usa comillas inteligentes) como test.csv "123", "4,5,6" y se abrió en Excel como usted describió.

Intente reemplazar "y" con "


Después de jugar con su muestra, noto que a Excel no le gustan los espacios entre campos

por ejemplo, en lugar de

"20051", "", "2009 Sep 30 02:53:23", ...

usted quiere

"20051","","2009 Sep 30 02:53:23",...

un reemplazo decente de expresión regular debería ser capaz de manejarlo con

Find:    |("[^"]*",) |
Replace: |\1|

(caracteres de tubería solo para señales visuales)

O simplemente modifique el código .Net si tiene acceso a él ;-)

Además, como señaló Arjan , es posible que también deba convertir el archivo de UTF-8 a ANSI para evitar que la celda A1 contenga la lista de materiales y sus qoutes circundantes.

Me he encontrado con el Catch 22 de CSV codificado por ANSI que no maneja caracteres internacionales y que CSV codificado por UTF no está siendo manejado adecuadamente por Excel; y no encontré una solución mientras mantenía el CSV. Si se requiere compatibilidad con caracteres internacionales, los formatos XML (o XLS nativo) parecen ser el único camino a seguir, a costa de la simplicidad.

Comunidad
fuente
No hay citas inteligentes involucradas. Este archivo se generó para usar comillas estándar de un programa escrito en .Net.
Rory Becker
No tenía la intención de decir que los archivos UTF-8 deberían codificarse de manera diferente. Pero al importar UTF-8, entonces uno debe decirle a Excel cuál es la codificación. Y UTF-8 está oculto en alguna parte debajo de esa larga lista de codificaciones.
Arjan
Importé muchos archivos CSV codificados UTF-8. Aunque estoy seguro de que tenían una lista de materiales.
Arjan
@lumbarious: ¡Eres una ESTRELLA! Funciona perfectamente ... No puedo creer que Excel no pueda lidiar con esto :(
Rory Becker
1
Sí, aparentemente los espacios entre campos confunden por completo a Excel 2011. Eliminar los espacios corrige el problema y también evita que Excel incluya las comillas como parte de los datos. Supongo que hay una especificación en alguna parte que establece que las comillas dobles solo delimitan los datos si están directamente adyacentes a la coma.
Peter Gluck
9

Este problema me ha estado atormentando durante varios años. Acabo de descubrir la solución y se menciona en las respuestas anteriores, pero no se explica explícitamente.

¡Es el espacio después de la coma!

Esto no importa a Excel;

HEADER1, HEADER2
"1,000", "2,000"

Mientras

HEADER1,HEADER2
"1,000","2,000"

¡Trabajos!

Mark Milbourne
fuente
3
¡Bienvenido a Super User! Esta respuesta fue escrita de una manera útil y clara. Gracias por su contribución y esperamos que se quede.
user1717828
YAAAS! La respuesta aceptada tiene la respuesta real a la pregunta enterrada a diferencia de esta respuesta. La operación no usa comillas inteligentes.
dardub
2

Cuando trato de abrir este archivo, Excel ignora por completo las comillas y asume que son parte de los datos. Por lo tanto, divide los campos que contienen comas en varias columnas.

Si no está usando accidentalmente comillas inteligentes como sugiere Lumbarius , y suponiendo que está en Windows: eso podría deberse a su configuración regional. Al hacer doble clic o usar Archivo »Abrir, Excel no le solicita ningún detalle, sino que simplemente utiliza esta configuración.

Aún así, la invocación manual de la función de importación (como lo hizo) debería haber funcionado, por lo que dudo que cambiar la configuración regional ayude ...

Arjan
fuente
Esto parece más un comentario que una respuesta ...
Metafaniel
¡Esta sugerencia resolvió mi problema exactamente! Hacer una importación CSV (Datos> Desde texto / CSV) no funcionó como se esperaba, pero si solo hice Archivo> Abrir en el archivo CSV, funcionó. Luego pude copiar / pegar toda la tabla en mi otro libro de trabajo.
WOUNDEDStevenJones
1

¿Ha verificado la codificación de caracteres de su archivo? Intente configurar la codificación de caracteres en UTF-8.

Puede usar notepad2 para cambiar la codificación de caracteres.

Josh Comley
fuente
Notepad2 informa que la codificación es "UTF8 con firma"
Rory Becker
Luego, al importar, debe desplazarse hacia abajo en la lista de codificación. UTF-8 está oculto en algún lugar bajo de la lista. (No es necesario usar archivos CSV codificados con UTF-8, pero como su entrada ya es UTF-8, debe decirle a Excel qué se debe usar. Tenga en cuenta que un carácter de comillas normal se codificaría igual en ASCII, Western y UTF -8, pero tal vez la firma (una marca de orden de bytes) o algunos otros caracteres se confunden?)
Arjan
@ Peter ¿Por qué cambiar el enlace oficial a Wikipedia? ¿Eso no tiene nada de sentido? No queremos enviar demasiado a la gente, y esto ciertamente no garantiza una edición, especialmente en una publicación de dos años.
slhck
1

Simplemente agregue las respuestas aquí: concéntrese en los ESPACIOS después de COMMAS en sus archivos CSV. A Excel no le gustan estos si ha citado campos en sus datos.

Me gusta de Excel (4 columnas de datos):

a, b, c, d

Pero no le gusta (3 columnas de datos):

a, "b, c", d

Sí le gusta (3 columnas de datos):

a,"b, c",d
DocOc
fuente
Acabo de golpear ese problema. Estaba golpeando mi cabeza contra la pared hasta que llegué a esta nota. Esto es simplemente asombroso. Estoy ejecutando Excel 2017 y esa tontería todavía existe ...
Albert Godfrind
1

Me encontré con este problema hoy y también encontré una solución que funcionó para mí.

Mi entorno / contexto: tengo una página web con algunas preguntas (de formulario) que contienen comillas y comillas dobles. Tanto las preguntas como las respuestas se extraen de la base de datos y se escriben en un archivo de Excel con fines informativos.

Tuve el mismo problema descrito anteriormente: las preguntas que incluían comillas dobles y comas se dividían en varias columnas en Excel.

Para mis propósitos, usar dos comillas simples en lugar de una comilla doble fue el truco.

-> en el sitio web, dos comillas simples parecen una comilla doble para los visitantes del sitio

-> En el archivo de Excel, nuevamente, dos comillas simples parecen una comilla doble para los usuarios que ven los datos del informe

Me doy cuenta de que esta solución no funcionará para todos, pero espero que ayude a alguien.

Gerald
fuente
1

Pude hacer esto usando:

a,b,c,"=""(1,2,3)"""

que da cuatro columnas:

|  a  |   b   |   c   |   (1,2,3)   |
johnb
fuente
0

Otra forma de hacerlo:

  1. Abra el archivo en LibreOffice o OpenOffice Calc.
  2. Establezca las opciones de importación correctas, como UTF-8, separadas por comas, ...
  3. Almacene el archivo como ods o xls
  4. Abra el nuevo archivo en Excel.

De esta manera, puede establecer la codificación correcta como UTF-8, que muchas (¿todas?) Versiones de Excel no pueden manejar correctamente sin BOM y no tiene que preocuparse por una expresión regular que pueda reemplazar algo de texto dentro del campo y no lo notas

12431234123412341234123
fuente