¿Por qué los saltos de línea de Excel no se transfieren al Bloc de notas?

31

Al copiar una celda con saltos de línea en Excel y pegarla en el Bloc de notas, el texto se pega en una línea. ¿Porqué es eso?

Kyle Dixon
fuente
2
Hola bienvenido a superusuario! Intente proporcionar tantos detalles como sea posible para que pueda obtener una respuesta más detallada a su pregunta. Dirígete a tu propia página de preguntas para obtener consejos útiles que te ayudarán a hacer las mejores preguntas. Probé esto con Excel 2013 y Notepad ++ y eso funciona bien, pero pude replicar su problema descrito con la aplicación normal de Notepad que viene con el sistema operativo Windows y que no funciona.
angelofdev
Tenga en cuenta que el portapapeles puede admitir múltiples sabores del mismo fragmento (texto sin formato hasta muchos metadatos sobre el origen). Depende del programa receptor determinar cuál le gusta más. El bloc de notas no es muy inteligente.
Thorbjørn Ravn Andersen

Respuestas:

27

Se debe a la naturaleza de cómo funcionan las hojas de cálculo. Imagine que tiene una hoja de cálculo llena de datos. Si tuviera que copiar una fila completa de datos y luego pegarla en el Bloc de notas, todos esos datos deben estar en una línea. Esto se debe a que si tuviera que copiar otra fila de datos y pegarla, la siguiente fila de datos debe estar en una línea. Si hubo saltos de línea en la primera fila que copió, los datos ya no estarían en dos filas lineales. Si tuviera que copiar los datos del Bloc de notas y volver a la hoja de cálculo, no se pegaría correctamente.

Keltari
fuente
66
Esta respuesta es incorrecta. Intente guardar su bloc de notas después de pegar el texto con salto de línea. Luego abra el archivo con wordpad en su lugar. Solo un error en las versiones antiguas del bloc de notas . Debe marcar la otra respuesta como correcta.
Zak
@ Zak eres incorrecto. Así es como pegar desde Excel funciona en cualquier editor de texto simple. El artículo que vinculó no tiene nada que ver con un error, pero se trata de que el Bloc de notas agregue soporte para retorno de carro Unix y avances de línea.
Keltari
44
@Keltari En realidad no, @Zak es correcto. Por alguna razón, cuando agrega un salto de línea en Excel (usando Alt+Enter), solo se ingresa 0xA, no el 0xD 0xA completo, lo que significa LF, en lugar de CR/LF. Excel interpreta esto y muestra el salto de línea, mientras que el bloc de notas simple no lo hace, porque espera CR/LF. Es una diferencia en los formatos que se detectan más que un error, pero aún así, esa es la razón correcta.
ChatterOne
44
@ Keltari No hay nada que discutir. Use un editor binario y vea lo que está escrito en el archivo.
ChatterOne
1
@Keltari Honestamente, estos votos positivos son principalmente el efecto de ser la respuesta aceptada en un HNQ. Puedes ver cuántas personas más están de acuerdo con las otras respuestas.
kapex
45

Esto es cierto cuando usa el Bloc de notas, que es el editor de texto básico de Microsoft que ya está preinstalado en Windows.

Sin embargo, puede usar un editor de texto más avanzado como PSPad o Notepad ++ (ambos excelentes y gratuitos), y puede transferir sus saltos de línea.

Excel :

Sobresalir

Celda marcada, luego copiar y pegar en Notepad ++ :

Notepad ++

Mismo contenido pegado en el Bloc de notas (el editor predeterminado de Windows):

WindowsNotpad

Tenga en cuenta que en ambos casos, las comillas se agregaron automáticamente.

Los mejores editores también le dan la opción de mostrar los caracteres de control como LineFeed (LF) y CarriageReturn (CR). En Notepad ++ esto se ve así:

Notepad ++ con controles

Como conclusión: elija su herramienta según sus necesidades. Si necesita que se conserven los límites de las celdas en el editor, pero el contenido de las celdas puede modificarse un poco, use el Bloc de notas. Si necesita que el contenido de la celda no se toque, incluidos los saltos de línea, y la reproducibilidad 1: 1 de los límites de la celda no es crucial, use otro editor.

Procesamiento masivo de dichos datos.

Si necesita que tanto los bordes de la celda como el contenido de la celda se conserven 1: 1 al mismo tiempo, puede tener problemas.

Puede haber soluciones más inteligentes, pero lo que hice en tales casos fue escribir un pequeño programa en cualquier lenguaje (VBA, Python o lo que más le guste) que lea el contenido y agregue cadenas de marcador de posición para los saltos de línea (algo tan simple como "### Linebreak ###", que luego puede ser reemplazado por caracteres de control CR y LF. Por supuesto, este es un trabajo complicado y solo tiene sentido si tiene que procesar grandes cantidades de datos.

Puede tener problemas también con las comillas que se agregan. A primera vista, esto puede ser útil para preservar los límites de las celdas incluso cuando se incluyen saltos de línea. Sin embargo, su celda puede tener comillas como parte del contenido original, y luego tiene nuevos problemas. Hay varias soluciones para esto, entonces, pero necesita su atención.

Christian Geiselmann
fuente
12
Notepad ++ que muestra CRLFallí es en realidad porque ve el LFy asume que se supone que está lleno CRLFy lo convierte.
3D1T0R
@ 3D1T0R Sospecho que se debe a que un retorno de carro sin avance de línea sufriría la legibilidad. Sin embargo, sería deliciosamente eficiente en espacio.
Stian Yttervik
44
@ 3D1T0R: depende de la configuración de final de línea de Notepad ++. Es posible "pegar binario" para mantener el formato original de Excel, que de hecho es solo LF.
Thomas Weller
1
Esta debería ser la respuesta aceptada
ChatterOne
1
Tenga en cuenta que el Bloc de notas en Windows 10 versión 1809 tiene la opción de usar LF como salto de línea (en lugar de CR-LF). Si usa eso, no hay conversión, pero los saltos de línea todavía se muestran correctamente.
Erik A
34

La respuesta de Keltari da el razonamiento lógico, mientras que esta respuesta se centra en la diferencia técnica.

Hay tres formas diferentes de saltos de línea en uso en informática:

  • Las terminaciones de línea de Unix y macOS 10.0+ utilizan un carácter de avance de línea ( LF)
  • Las terminaciones de línea de Macintosh (antes de macOS 10.0) usan un carácter de retorno de carro ( CR)
  • Los finales de línea de Windows usan una combinación de caracteres de retorno de carro y avance de línea ( CRLF)

Esta es una retención de la forma en que funcionan los escritores de texto.

Excel usa una combinación de estos saltos de línea para representar celdas con varias líneas:

  • Las celdas están separadas por el Tabpersonaje.
  • Las filas están separadas por los CRLFcaracteres.
  • Las celdas multilínea separan cada línea usando solo el LFcarácter.

Esto se hace evidente cuando guarda su libro de trabajo como un .txtarchivo y lo abre con un editor de texto que admite mostrar estos caracteres.

Sobresalir

Notepad ++

El Bloc de notas solo procesa CRLFcomo nuevas líneas e ignora LFo CRpor sí mismos. Todavía están en el documento, pero no son visibles de ninguna manera.

Nota: No verá esto al pegar de un lado a otro, porque Notepad ++ ajusta automáticamente las terminaciones de línea por usted, mientras que el Bloc de notas normal no lo hace.

Worthwelle
fuente
3
También hay que mencionar que el LF es en realidad todavía presente cuando se peguen en el bloc de notas, bloc de notas, simplemente no lo muestra visiblemente. (Representa efectivamente lo mismo que un espacio de ancho cero.) Por lo tanto, por qué copiar los datos pegados del bloc de notas en Excel incluye estos saltos de línea (aunque Excel no les cambia el tamaño automáticamente a las filas).
3D1T0R
3
Tenga en cuenta que así es como Excel exporta libros a archivos de texto. Para los archivos xlsx, los saltos de línea dentro de una cadena están realmente representados por CRLF.
kapex
3
Curiosamente, es completamente posible construir una celda que "realmente" contenga un CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Los saltos de línea producidos por las fórmulas no son visibles en Excel, pero funcionan bien si se copian y luego se pegan mediante "pegar valores". Un valor pegado de escribir manualmente "A<CRLF>B"en el bloc de notas y copiar también retendrá el CRLF.
Random832
3
@ 3D1T0R es correcto. Intente copiar una sola celda de Excel con el texto "a \ nb" (donde "\ n" representa una nueva línea) en el Bloc de notas. Verá "ab" en el Bloc de notas (con las comillas). ¡Pero si coloca el cursor delante de "a" y presiona la tecla de flecha derecha en su teclado tres veces, encontrará que hay un carácter invisible de ancho cero entre "a" y "b"! De hecho, ¡también puedes usar la tecla Shift para seleccionarlo y copiarlo al portapapeles!
Andreas Rejbrand
2
@AndreasRejbrand: He usado esta técnica varias veces para hacer que los archivos de texto con LFEOL sean legibles rápidamente. es decir, busque un LFcarácter, seleccionarlo, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Luego repetidamente F3, Enterhasta el final. [Editar: <kbd> no funciona en los comentarios?]
3D1T0R
1

Excel usa LF para denotar nuevas líneas dentro de una celda. El Bloc de notas no considera que se trate de una nueva línea, ya que Windows en general usa CRLF para las nuevas líneas.

Notepad ++ es más inteligente que el Notepad relativamente simple y, por lo tanto, interpreta LF como una nueva línea también.

Benjamin Goodacre
fuente
No uso Notepad ++, pero por curiosidad: ¿qué sucede si tiene una tabla de Excel que consta de al menos dos filas que contienen una celda multilínea y la copia y pega en Notepad ++?
Andreas Rejbrand
1
@AndreasRejbrand Las celdas de varias líneas se envolverán "y Notepad ++ normalizará todas las terminaciones de línea para que coincidan. Ver aquí . Si en su lugar guarda como .txty se abre en Notepad ++, las celdas multilínea LFsolo tendrán . Ver aquí .
Worthwelle