При копировании ячейки с разрывами строк в Excel и вставке ее в Блокнот текст вставляется в одну строку. Почему это?
microsoft-excel
notepad
linebreaks
Кайл Диксон
источник
источник
Ответы:
Это связано с характером работы электронных таблиц. Представьте, что у вас есть электронная таблица с данными. Если вам нужно скопировать всю строку данных, а затем вставить ее в Блокнот, все эти данные должны быть в одной строке. Это потому, что если вы скопируете другую строку данных и вставите ее, следующая строка данных должна быть в одной строке. Если в первой скопированной строке были разрывы строк, данные больше не будут находиться в двух линейных строках. Если вы скопируете данные из Блокнота и вернетесь в электронную таблицу, они будут вставлены неправильно.
источник
Alt+Enter
), вводится только 0xA, а не полный 0xD 0xA, что означаетLF
вместоCR/LF
. Excel интерпретирует это и показывает разрыв строки, в то время как обычный блокнот этого не делает, потому что это ожидаетCR/LF
. Это разница в обнаружении форматов больше, чем ошибка, но, тем не менее, это правильная причина.Это верно, когда вы используете Блокнот, который является основным текстовым редактором Microsoft, который уже предустановлен в Windows.
Тем не менее, вы можете использовать более продвинутый текстовый редактор, такой как PSPad или Notepad ++ (как отличный, так и бесплатный), и вы получите переносы строк.
Excel :
Ячейка отмечена, затем скопируйте и вставьте в Notepad ++ :
Тот же контент, вставленный в Блокнот (редактор Windows по умолчанию):
Обратите внимание, что в обоих случаях кавычки были добавлены автоматически!
Лучшие редакторы также дают возможность отображать управляющие символы, такие как LineFeed (LF) и CarriageReturn (CR). В Notepad ++ это выглядит так:
В заключение: выберите свой инструмент в зависимости от ваших потребностей. Если вам нужно сохранить границы ячеек в редакторе, но содержимое ячеек может быть немного изменено, используйте Блокнот. Если вам нужно, чтобы содержимое ячейки оставалось нетронутым, включая разрывы строк, и воспроизводимость границ ячеек 1: 1 не имеет решающего значения, используйте другой редактор.
Массовая обработка таких данных
Если вам нужно, чтобы границы ячеек и содержимое ячеек сохранялись 1: 1 одновременно, вы можете столкнуться с проблемами.
Могут быть более разумные решения, но в таких случаях я писал небольшую программу на любом языке (VBA, Python или как вам больше нравится), который считывает содержимое и добавляет строки-заполнители для разрывов строк (что-то такое простое, как: «### Linebreak ###», который впоследствии можно заменить контрольными символами CR и LF. Конечно, тогда это сложная работа и имеет смысл, только если вам нужно обрабатывать большие объемы данных.
Вы можете столкнуться с проблемами и с добавленными кавычками. На первый взгляд это может быть полезно для сохранения границ ячеек, даже если включены разрывы строк. Однако ваша ячейка может иметь кавычки как часть исходного содержимого, и тогда у вас возникают новые проблемы. Есть несколько решений, но это требует вашего внимания.
источник
CR
LF
что на самом деле это происходит потому, что он видитLF
и предполагает, что он должен быть полным,CR
LF
и преобразует его.Keltari «s ответ дает логическое мышление, в то время как этот ответ фокусируется на технической разнице.
В вычислениях используются три различных вида разрывов строк:
LF
)CR
)CRLF
)Это удержание от того, как работают пишущие.
Excel использует комбинацию этих разрывов строк для представления ячеек с несколькими строками:
Tab
символом.CRLF
символами.LF
символ.Это становится очевидным, когда вы сохраняете свою книгу в виде
.txt
файла и открываете ее в текстовом редакторе, который поддерживает отображение этих символов.Блокнот обрабатывает только
CRLF
как новые строки и игнорируетLF
илиCR
самостоятельно. Они все еще находятся в документе, но никак не видны.Примечание. Вы не увидите этого при вставке назад и вперед, потому что Notepad ++ автоматически подгоняет окончания строк, а обычный Notepad - нет.
источник
LF
это на самом деле все еще присутствует при вставке в блокнот, записная просто не отображает его явно. (Он отображает практически то же самое, что и пробел нулевой ширины.) Поэтому копирование вставленных данных обратно из блокнота в Excel включает в себя эти разрывы строк (хотя Excel автоматически не изменяет для них размеры строк).CRLF
.="A"&CHAR(13)&CHAR(10)&"B"
. Разрывы строк, создаваемые формулами, не отображаются в Excel, но работают нормально, если их скопировать, а затем вставить с помощью «вставки значений». Значение, вставленное при вводе вручную"A<CRLF>B"
в блокноте и копировании, также сохранит CRLF.LF
быстро читать текстовые файлы с EOL. т.е. НайдитеLF
символ, выберите его,Ctrl
+C
,Ctrl
+Home
,Ctrl
+F
,Ctrl
+V
,Enter
,Esc
,Enter
. Затем неоднократноF3
,Enter
до конца. [Редактировать: <kbd> не работает в комментариях?]Excel использует LF для обозначения новых строк в ячейке. Блокнот не считает это новой строкой, поскольку Windows обычно использует CRLF для новых строк.
Notepad ++ более интеллектуален, чем относительно простой Блокнот, и поэтому интерпретирует LF как новую строку.
источник
"
и Notepad ++ нормализует все окончания строк для соответствия. Смотрите здесь . Если вы вместо этого сохраните как.txt
и откроете в Notepad ++, многострочные ячейки будут иметьLF
только. Смотрите здесь .