Чому розриви рядків Excel не переносяться в Блокнот?


31

Під час копіювання комірки з розривом рядків у Excel та вставлення її в Блокнот текст вставляється в один рядок. Чому так?


2
Привіт, ласкаво просимо до суперпользователя! Постарайтеся надати якомога більше деталей, щоб ви могли отримати більш детальну відповідь на своє запитання. Перейдіть, щоб задати власну сторінку запитань про зручні поради, які допоможуть вам задати найкращі запитання. Я перевірив це за допомогою Excel 2013 та Notepad ++, і це працює чудово, але мені вдалося повторити описану проблему за допомогою звичайного додатка Notepad, який постачається з ОС Windows, і який не працює.
angelofdev

Зауважте, що буфер обміну може підтримувати декілька ароматів одного фрагмента (необроблений текст до великої кількості метаданих про те, звідки він походить). Саме від програми, яка приймає, визначити, що їй найбільше подобається. Блокнот не дуже розумний.
Thorbjørn Ravn Andersen

Відповіді:


27

Це обумовлено характером роботи електронних таблиць. Уявіть, що у вас є електронна таблиця, повна даних. Якщо потрібно було скопіювати цілий ряд даних, а потім вставити їх у Блокнот, усі ці дані повинні бути в одному рядку. Це тому, що якщо ви повинні було скопіювати інший рядок даних та вставити їх, наступний рядок даних повинен бути в одному рядку. Якби в першому ряді, який ви скопіювали, були розриви рядків, дані більше не були б у двох лінійних рядках. Якби ви скопіювали дані з Блокнота та назад у електронну таблицю, вони не вставлять належним чином.


6
Ця відповідь неправильна. Спробуйте зберегти блокнот після вставки тексту з розривом рядка. Тоді відкрийте файл замість WordPad. Просто помилка у старих версіях блокнота . Ви повинні позначити іншу відповідь правильною.
Зак

@Zak ви неправі. Ось як вставлення з Excel працює в будь-який простий текстовий редактор. Стаття, яку ви пов’язали, не має нічого спільного з помилкою, але стосується Блокнота, який додає підтримку повернення вантажівок Unix та каналів рядків.
Келтарі

4
@Keltari Насправді ні, @Zak вірно. Чомусь, коли ви додаєте розрив рядка в Excel (використовуючи Alt+Enter), вводиться лише 0xA, а не повний 0xD 0xA, що означає LFзамість CR/LF. Excel інтерпретує це і показує розрив рядка, тоді як звичайний блокнот не робить, тому що він очікує CR/LF. Різниця у виявленні форматів більше, ніж помилка, але все-таки це правильна причина.
ChatterOne

4
@Keltari Нічого сперечатися. Використовуйте двійковий редактор і подивіться, що написано у файлі.
ChatterOne

1
@Keltari Чесно кажучи, ці результати є, в основному, наслідком того, що це прийнята відповідь на HNQ. Ви можете бачити, як багато інших людей згодні з іншими відповідями.
капекс

45

Це вірно, коли ви використовуєте Блокнот, який є основним текстовим редактором Microsoft, який уже встановлений у Windows.

Однак ви можете використовувати більш просунутий текстовий редактор, такий як PSPad або Notepad ++ (і відмінний, і безкоштовний), і ви отримаєте перерви в рядках.

Excel :

Excel

Cell відзначений, а потім скопіювати-вставити в Notepad ++ :

Блокнот ++

Той самий вміст вставлений у Блокнот (редактор за замовчуванням Windows):

WindowsNotpad

Зауважте, що в обох випадках лапки додаються автоматично!

Кращі редактори також надають можливість відображення контрольних символів, таких як LineFeed (LF) та CarriageReturn (CR). У Блокноті ++ це виглядає так:

Блокнот ++ з контролерами

Як висновок: вибирайте свій інструмент залежно від ваших потреб. Якщо вам потрібні межі комірок, які зберігаються в редакторі, але вміст комірок може бути трохи змінено, використовуйте Блокнот. Якщо вам потрібен вміст комірок, який не змінюється, включаючи розриви рядків, і відтворення меж комірки 1: 1 не є вирішальним, скористайтеся іншим редактором.

Масова обробка таких даних

Якщо вам потрібні одночасно і рамки клітин, і вміст комірок 1: 1, ви можете зіткнутися з проблемами.

Можливо, існують більш розумні рішення, але те, що я робив у таких випадках, - це написання невеликої програми будь-якою мовою (VBA, Python або все, що вам найбільше подобається), яке читає вміст і додає рядки заповнювачів для розривів рядків (щось таке просто, як "### Linebreak ###", який згодом можна буде замінити символами керування CR та LF. Звичайно, це непогано працює тоді і має сенс, лише якщо вам доведеться обробляти велику кількість даних.

У вас можуть виникнути проблеми також із доданими лапками. Вони можуть на перший погляд бути корисними для збереження меж комірок, навіть якщо включені розриви рядків. Однак у вашій комірці можуть бути лапки частина оригінального вмісту, і тоді у вас з’являться нові проблеми. Тоді для цього є різні рішення, але це потребує вашої уваги.


12
Блокнот ++, що CRLFтам відображається насправді, тому що він бачить LFі припускає, що він повинен бути повним CRLFі перетворює його.
3D1T0R

@ 3D1T0R Я підозрюю, що це тому, що повернення вагона без стрічки подачі постраждає від читабельності. Це було б чудово космічно ефективним.
Стіан Іттервік

4
@ 3D1T0R: це залежить від налаштування закінчення рядка Notepad ++. Можна "бінарне вставити", щоб зберегти оригінальне форматування Excel, яке справді є лише LF.
Томас Веллер

1
Це має бути прийнята відповідь
ChatterOne

1
Зауважте, що Блокнот під Windows 10 версії 1809 має можливість використовувати LF як розрив рядків (замість CR-LF). Якщо ви користуєтесь цим, перетворення не відбувається, але перерви в рядку все ще відображаються належним чином.
Ерік А

34

Keltari «s відповідь дає логічне мислення, в той час як ця відповідь фокусується на технічної різниці.

Існує три різні форми розривів рядків, які використовуються в обчисленні:

  • Кінцеві рядки для Unix та macOS 10.0+ використовують символ подачі рядка ( LF)
  • Закінчення рядків Macintosh (до macOS 10.0) використовують символ повернення каретки ( CR)
  • Кінцеві рядки Windows використовують комбінацію символів повернення каретки та рядків каналу ( CRLF)

Це перешкода тому, як працюють письменники типу.

Excel використовує комбінацію цих розривів рядків для представлення комірок з декількома рядками:

  • Клітини розділені Tabсимволом.
  • Рядки розділені CRLFсимволами.
  • Багаторядкові комірки відокремлюють кожен рядок, використовуючи лише LFсимвол.

Це стає очевидним, коли ви зберігаєте свою робочу книжку як .txtфайл та відкриваєте її текстовим редактором, який підтримує показ цих символів.

Excel

Блокнот ++

Блокнот обробляє лише CRLFнові рядки та ігнорує LFабо CRсамостійно. Вони все ще є в документі, але ні в якому разі не видно.

Примітка. Ви не побачите цього під час вставки вперед і назад, оскільки Notepad ++ автоматично коригує закінчення рядків для вас, тоді як звичайний блокнот цього не робить.


3
Слід також зазначити , що LF це на самому справі все ще присутній при вставці в блокнот, записна просто не відображає його явно. (Це робить ефективно таким же, як і простір нульової ширини.) Отже, чому копіювання вставлених даних назад із блокнота в Excel включає ці перерви рядків (хоча Excel автоматично не змінює розмір рядків до них).
3D1T0R

3
Зауважте, що саме так Excel експортує робочі книги в текстові файли. Для файлів xlsx перерви рядків у рядку насправді представлені символом CRLF.
kapex

3
Цікаво, що цілком можливо побудувати клітинку, яка "справді" містить CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Розриви рядків, створені формулами, не видно у excel, але добре спрацьовують, якщо їх скопіювати та вставити через "вставити значення". Значення, вставлене під час введення вручну "A<CRLF>B"в блокнот та копіювання, також збереже CRLF.
Випадково832

3
@ 3D1T0R вірно. Спробуйте скопіювати одну клітинку Excel з текстом "a \ nb" (де "\ n" являє собою новий рядок) у Блокнот. Ви побачите "ab" у Блокноті (із лапками). Але якщо поставити каре перед «a» і тричі натиснути клавішу зі стрілкою вправо на клавіатурі, ви побачите, що між «a» і «b» є невидимий символ нульової ширини! Дійсно, ви також можете використовувати клавішу Shift, щоб вибрати її та скопіювати у буфер обміну!
Андреас Рейбранд

2
@AndreasRejbrand: Я неодноразово використовував цю техніку, щоб зробити текстові файли з LFEOL швидко читабельними. тобто Знайдіть LFсимвол, виберіть його, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Потім повторно F3, Enterдо кінця. [Редагувати: <kbd> не працює в коментарях?]
3D1T0R

1

Excel використовує LF для позначення нових рядків у комірці. Блокнот не вважає це новим рядком, оскільки Windows взагалі використовує CRLF для нових рядків.

Блокнот ++ більш розумний, ніж порівняно простий Блокнот, і тому інтерпретує LF як новий рядок також.


Я не використовую Notepad ++, але з цікавості: що трапиться, якщо у вас є таблиця Excel, що складається щонайменше з двох рядків, що містять багаторядкові комірки та скопіюйте їх, вклавши в Notepad ++?
Андреас Рейбранд

1
@AndreasRejbrand Багаторядкові комірки будуть завернуті, "а «Блокнот ++» нормалізує відповідність усіх закінчень рядків. Дивіться тут . Якщо замість цього зберегти як .txtі відкрити в Блокноті ++, багатоклітинні комірки матимуть LFлише. Дивіться тут .
Worthwelle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.