Necesito generar un archivo para Excel, algunos de los valores en este archivo contienen varias líneas.
También hay texto que no está en inglés, por lo que el archivo debe ser Unicode.
El archivo que estoy generando ahora se ve así: (en UTF8, con texto en inglés mezclado y con muchas líneas)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Tenga en cuenta que el valor de varias líneas se incluye entre comillas dobles, con una nueva línea diaria normal.
Según lo que encontré en la web, se supone que esto funciona, pero no funciona, al menos no gana los archivos Excel 2007 y UTF8, Excel trata la tercera línea como la segunda fila de datos, no como la segunda línea de la primera fila de datos .
Esto tiene que ejecutarse en las máquinas de mis clientes y no tengo control sobre su versión de Excel, por lo que necesito una solución que funcione con Excel 2000 y versiones posteriores.
Gracias
EDITAR: "resolví" mi problema al tener dos opciones de CSV, una para Excel (Unicode, separada por tabulaciones, sin líneas nuevas en los campos) y otra para el resto del mundo (UTF8, CSV estándar).
No es lo que estaba buscando, pero al menos funciona (hasta ahora)
Respuestas:
Debe tener caracteres de espacio al comienzo de los campos SOLO donde los caracteres de espacio son parte de los datos. Excel no eliminará los espacios iniciales. Obtendrá espacios no deseados en sus encabezados y campos de datos. Peor aún, lo
"
que debería ser "proteger" ese salto de línea en la tercera columna será ignorado porque no está al comienzo del campo.Si tiene caracteres no ASCII (codificados en UTF-8) en el archivo, debe tener una lista de materiales UTF-8 (3 bytes
hex EF BB BF
) al comienzo del archivo. De lo contrario, Excel interpretará los datos de acuerdo con la codificación predeterminada de su localidad (por ejemplo, cp1252) en lugar de utf-8, y sus caracteres que no sean ASCII serán descartados.Los siguientes comentarios se aplican a Excel 2003, 2007 y 2013; no probado en Excel 2000
Si abre el archivo haciendo doble clic en su nombre en el Explorador de Windows, todo funciona bien.
Si lo abre desde Excel, los resultados varían:
Las opciones incluyen:
fuente
EFBBBF
encabezado, se usa0A
como separador de fila y0D0A
como nueva línea dentro de las cadenas en las celdas de texto.Después de muchos ajustes, aquí hay una configuración que funciona generando archivos en Linux, leyendo en Windows + Excel, aunque el formato de nueva línea incrustado no está de acuerdo con el estándar :
En Perl, usé Text :: CSV para hacer esto de la siguiente manera:
fuente
\n
. GraciasRecientemente tuve un problema similar, lo resolví importando un archivo HTML , el ejemplo de referencia sería el siguiente:
Lo sé, no es un CSV, y podría funcionar de manera diferente para varias versiones de Excel, pero creo que vale la pena intentarlo.
Espero que esto ayude ;-)
fuente
Vale la pena señalar que cuando un archivo .CSV tiene campos envueltos en comillas dobles que contienen saltos de línea, Excel no importará el archivo .CSV correctamente si el archivo .CSV está escrito en formato UTF-8. Excel trata el salto de línea como si fuera CR / LF y comienza una nueva línea. La hoja de cálculo está confusa. Eso parece ser cierto incluso si se utilizan punto y coma como delimitadores de campo (en lugar de comas).
El problema se puede resolver usando el Bloc de notas de Windows para editar el archivo .CSV, usando Archivo> Guardar como ... para guardar el archivo, y antes de guardar el archivo, cambiando la codificación del archivo de UTF-8 a ANSI. Una vez que el archivo se guarda en formato ANSI, encuentro que Microsoft Excel 2013 que se ejecuta en Windows 7 Professional importará el archivo correctamente.
fuente
La nueva línea dentro de un valor parece funcionar si usa punto y coma como separador, en lugar de coma o tabulación, y usa comillas.
Esto funciona para mí tanto en Excel 2010 como en Excel 2000. Sin embargo, sorprendentemente, funciona solo cuando abre el archivo como una nueva hoja de cálculo, no cuando lo importa a una hoja de cálculo existente utilizando la función de importación de datos.
fuente
En una PC, el carácter ASCII # 10 es lo que desea colocar una nueva línea dentro de un valor.
Sin embargo, una vez que lo ingrese a Excel, debe asegurarse de que el ajuste de línea esté activado para las celdas de varias líneas o la nueva línea aparecerá como un cuadro cuadrado.
fuente
Esto no funcionará si intenta importar el archivo a EXCEL.
Asociar la extensión de archivo csv con EXCEL.EXE para que pueda invocar EXCEL haciendo doble clic en el archivo csv.
Aquí coloco un texto seguido de NewLine Char seguido de un poco más de texto Y encerrando toda la cadena con comillas dobles.
No use un CR ya que EXCEL colocará parte de la cadena en la siguiente celda.
Cuando invoque EXCEL, verá esto. Es posible que deba ajustar automáticamente el tamaño de la altura para verlo todo. Donde los saltos de línea dependerán del ancho de la celda.
2
FECHA
Aquí está el código en Basic
fuente
Encontré esto y me ha funcionado
Entonces, donde necesitas tener cosas encerradas
.....
Luego, cuando necesite escribir algo, como HTML que incluye el "puede hacer esto
Las nuevas líneas terminan con
. PHP_EOL
El final del script imprime un enlace para que el usuario pueda descargar el archivo.
fuente
Los archivos UTF que contienen una lista de materiales harán que Excel trate las nuevas líneas literalmente, incluso en ese campo rodeado de 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.
fuente
Prueba esto: funciona completamente para mí: pon las siguientes líneas en un
xxxx.csv
archivoAbierto con excel.
en algunos casos se abrirá directamente; de lo contrario, deberá usar la conversión de columna a datos. expanda el ancho de la columna y presione el botón de ajuste de texto. o formatear celdas y activar el texto de ajuste.
y gracias por las otras sugerencias, pero no funcionaron para mí. Estoy en un entorno puro de Windows, y no quería jugar con Unicode u otra cosa divertida.
De esta manera, puedes poner una fórmula de CSV para sobresalir. Puede haber muchos usos para este método de trabajo. (tenga en cuenta el = antes de las comillas)
pd: En sus sugerencias, ponga algunas muestras de los datos, no solo el código.
fuente
poner "\ r" al final de cada fila en realidad tuvo el efecto de saltos de línea en Excel, pero en el .csv desapareció y dejó un desastre feo donde cada fila se aplastó contra la siguiente sin espacio y sin saltos de línea
fuente
La forma en que lo hacemos (usamos VB.Net) es encerrar el texto con nuevas líneas en Chr (34), que es el carácter que representa las comillas dobles y reemplaza todos los caracteres CR-LF por LF.
fuente
Normalmente una nueva línea es "\ r \ n". En mi CSV, reemplacé "\ r" con un valor vacío. Aquí hay código en Javascript:
Cuando abro el CSV en MS Excel, funcionó bien. Si un valor tiene varias líneas, permanecerá dentro de 1 celda individual en la hoja de Excel.
fuente
Para Abrir archivo solamente, la sintaxis es
Lo crítico es que no hay espacio después del primer ",". Normalmente, los espacios están bien y se recortan si no se cita la cadena. Pero por lo demás desagradable. Me tomó un tiempo entenderlo.
No parece importar si la línea está terminada \ n o \ c \ n.
Asegúrese de expandir la barra de fórmulas para que pueda ver el texto en la celda (me atrapó después de un largo día ...)
Ahora, por supuesto, File Open no admitirá UTF-8 correctamente (a menos que uno use trucos).
Excel> Datos> Obtener datos externos > Del texto
Se puede configurar en modo UTF-8 (está muy por debajo de la lista de fuentes). Sin embargo, en ese caso, las nuevas líneas no parecen funcionar y no sé cómo solucionarlo.
(Una cosa podría ser que después de 30 años, la EM haría esto bien).
fuente
En Excel 365 al importar el archivo:
Datos -> Desde texto / CSV -> Seleccionar archivo> Transformar datos -> Configuración de origen de datos -> Seleccionar origen de datos -> Haga clic en Editar origen -> En el menú desplegable de salto de línea, seleccione Ignorar saltos de línea entre comillas.
El texto anterior se tradujo del portugués, por lo que la redacción podría ser diferente en inglés.
fuente
puedes hacer lo siguiente
"\"Value3 Line1 Value3 Line2\""
. Me funciona generando un archivo csv en javafuente
Aquí hay un enfoque interesante usando JavaScript ...
fuente
Imprimir una nueva línea HTML
<br/>
en el contenido y abrirlo en Excel funcionará bien en cualquier Excelfuente
Puede usar el método abreviado de teclado ALT + Intro.
fuente