¿Cómo obliga a Excel a citar todas las columnas de un archivo CSV?

89

Excel solo coloca comillas alrededor de ciertos campos, ¿cómo fuerzo a Excel a guardar un archivo CSV con comillas alrededor de cada columna?

Michael Shnitzer
fuente

Respuestas:

44

Si abre el archivo XLS en LibreOffice u OpenOffice, luego Guardar como ... y elige Text CSV, permite generar un archivo CSV que también incluye comillas como delimitadores. Por ejemplo: "Smith", "Pete", "Canadá" "Jones", "Mary", "Inglaterra"

Simplemente marque la casilla "Citar todas las celdas de texto": Exportar a CSV con LibreOffice

Para también citar campos numéricos, resalte su rango de celdas y cambie el formato de las celdas a "texto" antes de guardar.

Pete
fuente
77
¡Aunque no es una respuesta a la pregunta específica, es una solución más simple que tratar de hacer que mis clientes usen una macro!
Duncanmoo
Estoy cansado de usar este método todos los días, por eso estoy aquí
vladkras
Creo que esta es la solución más fácil y conveniente ya que OpenOffice es un software portátil. No tiene que instalar nada ni escribir ningún código.
Scott Chu
La mejor respuesta!
rajya vardhan
20
No es una respuesta en absoluto. La pregunta es explícita sobre MS Excel
vladkras
43

Esta página también tiene la solución que viene directamente de la boca del caballo:

http://support.microsoft.com/kb/291296/en-us

Si el enlace se degrada, el tema a buscar es:

"Procedimiento para exportar un archivo de texto con delimitadores de comas y comillas en Excel" y / o "Q291296"

tl; dr: usa su macro

sahmeepee
fuente
10
Algo que vale la pena señalar es que la macro está usando Integer para los valores de fila y columna. Recibirá un error si intenta exportar más de 32768 filas. Cambiar los tipos de datos a Long, por ejemplo, solucionará ese problema.
Dan
Buen lugar (+1). Parece que no han actualizado el código desde que se escribió por primera vez para versiones de Excel con solo 32768 filas como máximo.
sahmeepee
99
Me tomé la libertad de crear una esencia con esta macro, y un par de soluciones: gist.github.com/fabriceleal/7803969
fableal
@fableal ¡Gran fragmento! Merece estar en una respuesta.
xiankai
Office 2010, todavía se desborda en un gran número de filas seleccionadas, tal como lo mencionó @sahmeepee.
acceso otorgado el
18

Encontré esta solución fácil:

  1. Resalte las celdas que desea agregar las comillas.
  2. Haga clic derecho y vaya a: Formato de celdas → Pestaña: Número → Categoría: Personalizada
  3. Pegue lo siguiente en el campo Tipo : "''"@"''"(vea los detalles a continuación)
  4. Haga clic en "ok"

La cadena que está pegando es "''"@"''"comillas dobles, comillas simples, comillas simples, comillas dobles, símbolo @, comillas dobles, comillas simples, comillas simples, comillas dobles.

Editado para Excel 2010 a partir de la información que se encuentra aquí .

Miguel
fuente
Hmmm ... eso me dio '' ARTÍCULO '' (dos comillas simples) en lugar de "(una comilla doble). En ese momento hice una búsqueda y reemplazo para arreglarlo.
Clay Nichols
66
El formato debería haber sido \ ”@ \”
manat
Esta respuesta fue en realidad una respuesta perfecta si está utilizando LibreOffice: carece totalmente de una opción de "texto" en el menú Formato> Formato de número, a pesar de que su documentación insiste en que la opción está allí. Si hace clic con el botón derecho en "Formatear celdas" en LibreOffice, se le ofrece una lista COMPLETA de opciones de interpretación de celdas, en lugar de las 6 opciones algo inútiles presentadas en el menú desplegable.
1owk3y
@ respuesta de manat, pero sin las comillas tipográficas:\"@\"
MSC
12

Powershell parece volcar correctamente. entonces algo como

busque powershell.exe en la máquina Windows si no conoce powershell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

Espero que ayude a alguien.

ssaviers
fuente
Para mayor comodidad, Shift + clic derecho en la carpeta donde está guardado su CSV y elija Abrir ventana de PowerShell aquí , lo que simplifica el comando import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. recuerde utilizar comillas simples alrededor de nombres de archivos con espacios u otros caracteres especiales.
Walf
4

Esto fue lo más fácil para mí: importé la hoja de cálculo a Access 2010 y la exporté desde allí como un archivo de texto delimitado. Me dio las comillas alrededor de mis campos. Toma menos de un minuto para 42k filas ahora que tengo los pasos hacia abajo.

usuario326114
fuente
El único inconveniente sería si el campo en sí contiene una comilla doble.
access_granted
3

He encontrado otro trabajo que no involucra la macro VBA, pero que requiere Notepad ++ o un editor de texto similar basado en macro.

Exporte su archivo como texto separado por tabuladores, luego abra el archivo exportado en Notepad ++. Reemplace todas las instancias del carácter 'tabulador' con el texto "," (es decir, literalmente comillas dobles, comas, comillas dobles) y luego use otra macro para prefijar y sufijar cada línea de texto con comillas dobles.

Un poco hacky pero lo encontré más rápido que hacer funcionar una macro VBA.

Ácido azul
fuente
1
Si quisiera hacer eso en Notepad ++, sería mejor usar la búsqueda y reemplazo de expresiones regulares y luego podría hacer las 3 operaciones de reemplazo (inicio de línea, tabulación y final de línea) en un solo lugar
sahmeepee
3

Resalte las celdas que desea agregar las comillas. Vaya a Formato -> Celdas -> Copiar / Pegar de forma personalizada lo siguiente en el campo Tipo: \ ”@ \” Haga clic en “Aceptar”. Se alegra de no haberlo hecho todo a mano.

De: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/

Steve Coleman
fuente
1
Esto funciona bien para alfa: necesitará \ "# \" para columnas con valores numéricos.
DropHit
Entre \ "@ \" y \ "# \" esto funciona. Pero todavía tengo que editar los encabezados en Notepad ++ para las columnas numéricas, y luego reemplazar todo "" "con". Que dolor.
Gary
No lo he probado ... pero si está creando un csv, ¿no podría simplemente cambiar las columnas a texto y usar \ "@ \"
Steve Coleman
2
  1. Resalte las celdas que desea agregar las comillas.
  2. Haga clic derecho y vaya a: Formato de celdas → Pestaña: Número → Categoría: Personalizada
  3. Pegue lo siguiente en el campo Tipo: "''"@"''"(vea los detalles a continuación)
  4. Haga clic en "ok"
  5. Abra el archivo .csv con el Bloc de notas (o equivalente)
  6. Reemplazar todo ' '(comillas simples repetidas) con "(comillas dobles)
  7. Reemplaza todo ;
  8. Guardar archivo .csv revisado
eric
fuente
1

Si usa Notepad ++ para agregar comillas al comienzo de cada línea, simplemente abra el archivo csv exportado, coloque el cursor en la primera línea, primera columna, luego haga clic en el menú Editar / Editor de columnas ... , en el campo ' Texto para insertar ', enter " , luego el comienzo de cada línea tendrá una cita, luego puede usar expresiones regulares para buscar / reemplazar todas las pestañas.

Michael Zhang
fuente
0

Para usuarios de Windows

  1. Archivo de Excel "Guardar como" como CSV
  2. Abra el archivo guardado con la hoja de cálculo de Mircrosoft Works
  3. "Guardar como" la hoja de cálculo como CSV
  4. Todos los campos no numéricos ahora tienen "alrededor de ellos

Tenga en cuenta que esta no es la misma cita de teclado que tiene una variedad hacia adelante y hacia atrás.
Entonces, si usa CSV para CARGAR en la tabla Mysql, corte y pegue en el parámetro CERRADO; de lo contrario, se preguntará por qué recibe el mensaje#1083 - Field separator argument is not what is expected

Greg
fuente
3
Mircrosoft Works <-? ¿Estás seguro de eso?
nixda
0

Utilicé el siguiente enfoque para tomar tres columnas en Excel y construir la cadena en la cuarta columna.

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Mi problema con el "''"@"''"enfoque es que la segunda columna de mis datos fue un número que el "''"@"''"enfoque no hizo nada con los números. A veces la segunda columna está en blanco, pero necesitaba asegurarme de que estaba representada en el archivo de texto final.

usuario415149
fuente
0

Otra forma si tiene acceso MS (tengo ver 2007) importe el archivo y luego expórtelo como un archivo de texto. Luego cambie el .txt a .csv. Tenga en cuenta que todos los campos numéricos no tendrán comillas dobles, así que si necesita comillas dobles también alrededor de los números, mientras que en Access cambie el campo de un campo numérico a un campo de texto.

Decano
fuente
0

La exportación de cadenas separadas por comas y entre comillas se puede hacer solo con Excel 2016 y el Bloc de notas, utilizando una copia de los datos, una fórmula, una exportación, un cambio de propiedades de archivo, un reemplazo en el Bloc de notas, guardando el archivo exportado y la limpieza. Cada uno es un paso simple. En detalle:

  1. Copie las columnas que se exportarán a una nueva hoja intermedia para preservar el original y como copia de seguridad, y la nueva hoja se eliminará más tarde para dejar la hoja de cálculo como estaba.

  2. Poner caracteres que no aparezcan, diga '#' o ';-)' en cada extremo de una cadena en la columna, diga A con la fórmula =concat("#",trim(A1),"#"), colocando la fórmula en todas las filas de otra columna.

    • Las columnas adyacentes se pueden hacer al mismo tiempo, pero no cite números para evitar que se lean como cadenas.
    • El recorte evita los espacios finales que pueden desencadenar un comportamiento de exportación poco hábil.
    • Las cadenas no deben contener un '"' que pueda perturbar la importación.
  3. Copie la (s) nueva (s) columna (s) sobre A ..., utilizando el método '123' para no llevar la fórmula.

  4. Exporte la hoja como un archivo CSV, para poner las comas entre los campos, incluidos los números.

  5. Cambie las propiedades de file.csv para que pueda abrirse con el Bloc de notas.

  6. Use el Bloc de notas para reemplazar los caracteres arbitrarios con '"'.

  7. Si bien parece razonable usar "como el carácter arbitrario, debe colocarse en una celda diferente, digamos '$ A $ 50', y luego lo que aparece en la exportación es '" ""', aparentemente otro desencadenante inconveniente.

  8. En el bloc de notas, el archivo debe guardarse, convirtiéndose en un archivo * .txt para ser importado y el intermedio * .csv eliminado.

  9. Con la limpieza de la hoja de cálculo adicional, misión cumplida.

Quizás las herramientas de exportación de Access puedan algún día integrarse en Excel. Un enfoque más genérico entre los programas que usan cortar y pegar sería que las opciones de pegado incluyan una variedad de formas de interpretar la estructura de salida y proporcionar delimitadores.

HGB
fuente
0

La respuesta de Michael del 21 de agosto de 2014 es realmente útil. Sin embargo, tuve que realizar uno o dos pasos adicionales:

  1. Abra el archivo .csv con el Bloc de notas (o equivalente)
  2. Reemplazar todo '' (comillas simples repetidas) con "(comillas dobles)
  3. Reemplaza todo ; (utilizado como delimitador en la versión alemana de Excel) con,
  4. Guardar archivo .csv revisado
un CVn
fuente
No hay explicación para el downbvote? Par para el curso, pero ¿cómo se espera que otros aprendan? USTED podría pensar que obvio lo que está mal, el Sr. Downvoter, pero puede que no sea evidente para todos. Estamos tratando de construir una comunidad aquí, y no estás ayudando.
Mawg
-1

Esta es mi receta Odio tener que hacer esto, pero no tenía mejor manera. En mi caso, no obtengo citas de ningún campo. También necesitaba usar la codificación UTF-8 y; en lugar de pestañas, así que esto es lo que terminé haciendo.

NOTA: debido a la ilegibilidad de poner comillas dobles encerradas entre comillas simples, etc., he usado deliberadamente "formato de teclado" para indicar pulsaciones de teclas y caracteres literales y cadenas.

  1. Inserte una nueva columna antes que cualquier otra en su hoja de cálculo de Excel (haga clic en el título de la primera columna, se selecciona toda la columna, haga clic derecho, seleccione "insertar").
  2. Seleccione todo el rango de celdas vacías de la nueva columna (se seleccionan de forma predeterminada). En el campo de fórmula, insertar lo que quieras: por ejemplo, xxx. Presione CTRL+ enterpara llenar toda la columna con el mismo valor.
  3. Guarde el archivo como texto Unicode (* .txt).
  4. Abrir archivo en Notepad ++.
  5. Presione CTRL+ fpara abrir Buscar / Reemplazar.
  6. Vaya a la pestaña Reemplazar.
  7. En "Modo de búsqueda", seleccione "Extendido (\ n, \ r, \ t, \ 0, \ x ...)".
  8. En el campo "Buscar", ingrese xxxmás una tabpulsación de tecla.
  9. En el campo "Reemplazar", ingrese "(una comilla doble).
  10. Presione Reemplazar todo.
  11. En el campo "Buscar", presione una tabtecla.
  12. En "Reemplazar", ingrese ";"(comillas dobles, punto y coma, comillas dobles).
  13. Presione Reemplazar todo.
  14. Estas casi listo. Para la última comilla doble, ingrese \ren el campo "Buscar" y "\r"(comilla doble, barra invertida, comilla doble) en el campo "Reemplazar". Presione Reemplazar todo.
  15. Mientras no use caracteres chinos, etc., puede cambiar la codificación a UTF-8 y guardar el archivo de forma segura.
Pere
fuente
-1

Me he encontrado con este problema muchas veces. Aquí está la solución más simple que se me ocurrió.

  1. Guarde el archivo como Excel
  2. Importe Excel a una tabla de Access
  3. Exporte la tabla de Access a un archivo de texto.

El acceso le permitirá especificar el delimitador de exportación como una coma y campos de texto calificados con comillas. En el asistente de exportación, puede especificar cualquier delimitador o carácter alrededor de las cadenas que desee.

Es posible que deba crear una consulta de Access para organizar los campos en un orden particular u ocultar el campo de identificación automática agregado por Access.

Además ... una vez exportado a un CSV, NO lo abra en Excel nuevamente. Si desea ver los resultados, ábralo en el bloc de notas. Excel tiende a meterse con los datos de un csv ... Creo que fueron campos rellenados con ceros a la izquierda si recuerdo correctamente.

Gunther
fuente
Esto parece duplicar la información en la respuesta del usuario326114.
Fixer1234
-1

Aquí se explica cómo usar la aplicación OpenOffice para tomar una hoja de cálculo de Excel y crear un archivo de texto (csv) con comillas alrededor de cada campo de texto.

Abra el archivo de Excel con OpenOffice, luego siga estos pasos:

Archivo> Guardar como

Proporcione un nuevo nombre para el archivo que está a punto de crear.

Para Tipo de archivo, elija "Probar CSV (.csv)"

active la casilla de verificación "Editar configuración de filtro"

clic en Guardar"

elija "Mantener formato actual"

El delimitador de campo debe ser una coma:

El delimitador de texto debe estar entre comillas: "

marque la casilla "Citar todas las celdas de texto"

haga clic en Aceptar"

¡Esto funcionó para mí!

Mary H
fuente