Podczas kopiowania komórki z podziałami linii w programie Excel i wklejania jej do Notatnika tekst jest wklejany do jednej linii. Dlaczego?
microsoft-excel
notepad
linebreaks
Kyle Dixon
źródło
źródło
Odpowiedzi:
Wynika to z charakteru działania arkuszy kalkulacyjnych. Wyobraź sobie, że masz arkusz danych pełen danych. Jeśli chcesz skopiować cały wiersz danych, a następnie wklej go do Notatnika, wszystkie te dane muszą znajdować się w jednym wierszu. Wynika to z faktu, że jeśli skopiujesz kolejny wiersz danych i wkleisz go, następny wiersz danych musi znajdować się w jednym wierszu. Gdyby w pierwszym skopiowanym wierszu były podziały wiersza, dane nie byłyby już w dwóch wierszach liniowych. Jeśli skopiujesz dane z Notatnika i wrócisz do arkusza kalkulacyjnego, nie wklei się ono poprawnie.
źródło
Alt+Enter
), wprowadzana jest tylko wartość 0xA, a nie pełna 0xD 0xA, co oznaczaLF
zamiastCR/LF
. Excel interpretuje to i pokazuje podział linii, podczas gdy zwykły notatnik tego nie robi, ponieważ oczekujeCR/LF
. Różnica w wykrywaniu formatów to więcej niż błąd, ale nadal jest to właściwy powód.Dzieje się tak, gdy używasz Notatnika, który jest podstawowym edytorem tekstowym firmy Microsoft, który jest już wstępnie zainstalowany w systemie Windows.
Możesz jednak użyć bardziej zaawansowanego edytora tekstu, takiego jak PSPad lub Notepad ++ (zarówno doskonały, jak i darmowy), a otrzymasz przeniesienie podziałów linii.
Excel :
Komórka zaznaczona, a następnie skopiuj-wklej do Notepad ++ :
Ta sama treść wklejona do Notatnika (domyślny edytor Windows):
Pamiętaj, że w obu przypadkach znaki cudzysłowu były dodawane automatycznie!
Lepsze edytory dają również opcję wyświetlania znaków kontrolnych, takich jak LineFeed (LF) i CarriageReturn (CR). W Notepad ++ wygląda to następująco:
Podsumowując: wybierz swoje narzędzie w zależności od potrzeb. Jeśli potrzebujesz zachować granice komórek w edytorze, ale zawartość komórki może być nieco zmieniona, użyj Notatnika. Jeśli potrzebujesz pozostawić nietkniętą zawartość komórki, w tym podział linii, a odtwarzalność granic komórek 1: 1 nie jest kluczowa, użyj innego edytora.
Masowe przetwarzanie takich danych
Jeśli potrzebujesz jednocześnie zachować obramowanie komórki i zawartość komórki 1: 1, możesz napotkać problemy.
Mogą istnieć bardziej inteligentne rozwiązania, ale to, co zrobiłem w takich przypadkach, to napisanie małego programu w dowolnym języku (VBA, Python lub cokolwiek lubisz najbardziej), który czyta zawartość i dodaje ciągi znaków zastępczych dla podziałów linii (coś tak prostego jak „### Linebreak ###”, który można później zastąpić znakami kontrolnymi CR i LF. Oczywiście jest to wtedy kłopotliwe i ma sens tylko wtedy, gdy trzeba przetwarzać duże ilości danych.
Mogą wystąpić problemy również z dodanymi znakami cudzysłowu. Na pierwszy rzut oka mogą one być przydatne do zachowania granic komórek, nawet jeśli uwzględnione są podziały linii. Jednak komórka może zawierać cudzysłowy jako część oryginalnej treści, a następnie pojawiają się nowe problemy. Istnieją różne rozwiązania tego problemu, ale wymaga ono uwagi.
źródło
CR
LF
że tak jest, ponieważ widziLF
i zakłada, że powinien być pełnyCR
LF
i konwertuje go.Keltari „s odpowiedź daje logicznego rozumowania, a odpowiedź ta skupia się na różnicy technicznej.
Istnieją trzy różne formy podziału linii stosowane w komputerach:
LF
)CR
)CRLF
)Jest to przeszkoda w sposobie, w jaki pracują pisarze typów.
Excel używa kombinacji tych podziałów linii do reprezentowania komórek z wieloma liniami:
Tab
znakiem.CRLF
znakami.LF
znaku.Staje się to widoczne, gdy zapiszesz skoroszyt jako
.txt
plik i otworzysz go za pomocą edytora tekstu, który obsługuje wyświetlanie tych znaków.Notatnik przetwarza tylko
CRLF
jako nowe wiersze i ignorujeLF
lubCR
samodzielnie. Nadal są w dokumencie, ale nie są w żaden sposób widoczne.Uwaga: Nie zobaczysz tego podczas wklejania tam i z powrotem, ponieważ Notepad ++ automatycznie dostosowuje dla Ciebie zakończenia linii, podczas gdy zwykły Notatnik tego nie robi.
źródło
LF
jest on nadal obecny po wklejeniu w notatniku, notatnik po prostu nie wyświetla go w widoczny sposób. (Renderuje efektywnie to samo, co przestrzeń o zerowej szerokości.) Dlatego kopiowanie wklejonych danych z notatnika do Excela obejmuje te podziały wierszy (chociaż Excel nie zmienia automatycznie rozmiarów wierszy).CRLF
.="A"&CHAR(13)&CHAR(10)&"B"
. Podziały linii tworzone przez formuły nie są widoczne w programie Excel, ale działają dobrze, jeśli zostaną skopiowane, a następnie wklejone za pomocą „wartości wklejania”. Wartość wklejona podczas ręcznego pisania"A<CRLF>B"
w notatniku i kopiowania zachowa również CRLF.LF
szybko odczytać pliki tekstowe z EOL-em. tj ZnajdźLF
znak, wybierz go,Ctrl
+C
,Ctrl
+Home
,Ctrl
+F
,Ctrl
+V
,Enter
,Esc
,Enter
. Potem wielokrotnieF3
,Enter
aż do końca. [Edycja: <kbd> nie działa w komentarzach?]Excel używa LF do oznaczania nowych linii w komórce. Notatnik nie uważa tego za nową linię, ponieważ Windows ogólnie używa CRLF do nowych linii.
Notepad ++ jest bardziej inteligentny niż stosunkowo prosty Notepad i dlatego interpretuje LF jako nową linię.
źródło
"
a Notepad ++ znormalizuje wszystkie pasujące zakończenia linii. Zobacz tutaj . Jeśli zamiast tego zapiszesz jako.txt
i otworzysz w Notepad ++, komórki wielowierszowe będą miałyLF
tylko. Zobacz tutaj .