Tại sao ngắt dòng Excel không chuyển vào Notepad?


31

Khi sao chép một ô có ngắt dòng trong Excel và dán nó vào Notepad, văn bản sẽ được dán vào một dòng. Tại sao vậy?


2
Xin chào chào mừng đến siêu người dùng! Cố gắng cung cấp càng nhiều chi tiết càng tốt để bạn có thể nhận được câu trả lời chi tiết hơn cho câu hỏi của bạn. Trụ sở để hỏi trang câu hỏi của riêng bạn cho các mẹo hữu ích để giúp bạn đặt câu hỏi tốt nhất. Tôi đã thử nghiệm điều này với Excel 2013 và Notepad ++ và nó hoạt động tốt, nhưng tôi đã có thể sao chép vấn đề được mô tả của bạn với ứng dụng Notepad thông thường đi kèm với HĐH Windows và nó không hoạt động.
angelofdev

Lưu ý rằng bảng tạm có thể hỗ trợ nhiều hương vị của cùng một đoạn (văn bản thô cho đến nhiều siêu dữ liệu về nguồn gốc của nó). Tùy thuộc vào chương trình nhận để xác định xem nó thích gì nhất. Notepad không thông minh lắm.
Thorbjørn Ravn Andersen

Câu trả lời:


27

Đó là do bản chất của cách hoạt động của bảng tính. Hãy tưởng tượng bạn có một bảng tính đầy dữ liệu. Nếu bạn đã sao chép toàn bộ một hàng dữ liệu, sau đó dán nó vào Notepad, tất cả dữ liệu đó cần phải nằm trên một dòng. Điều này là do nếu bạn đã sao chép một hàng dữ liệu khác và dán nó, hàng dữ liệu tiếp theo cần phải nằm trên một dòng. Nếu có các ngắt dòng ở hàng đầu tiên bạn đã sao chép, dữ liệu sẽ không còn ở hai hàng tuyến tính nữa. Nếu bạn đã sao chép dữ liệu ra khỏi Notepad và quay lại bảng tính, nó sẽ không dán đúng cách.


6
Câu trả lời này là sai. Hãy thử lưu notepad của bạn sau khi dán văn bản với ngắt dòng. Sau đó mở tệp bằng wordpad thay thế. Chỉ là một lỗi trong các phiên bản cũ của notepad . Bạn nên đánh dấu câu trả lời khác là chính xác.
Zak

@Zak bạn không đúng. Đây là cách dán từ Excel hoạt động vào bất kỳ trình soạn thảo văn bản đơn giản nào. Bài viết mà bạn đã liên kết, không liên quan gì đến lỗi, nhưng là về việc Notepad hỗ trợ thêm cho việc trả lại dòng và dòng cấp dữ liệu Unix.
Keltari

4
@Keltari Thật ra không, @Zak đúng. Vì một số lý do khi bạn thêm ngắt dòng trong Excel (sử dụng Alt+Enter), chỉ nhập 0xA, không phải 0xD 0xA đầy đủ, có nghĩa là LF, thay vì CR/LF. Excel diễn giải điều này và hiển thị ngắt dòng, trong khi notepad đơn giản thì không, bởi vì nó mong đợi CR/LF. Đó là một sự khác biệt trong các định dạng được phát hiện nhiều hơn một lỗi, nhưng vẫn là lý do chính xác.
ChatterOne

4
@Keltari Không có gì để tranh cãi. Sử dụng một trình soạn thảo nhị phân và xem những gì được viết trong tệp.
ChatterOne

1
@Keltari Thành thật mà nói, các upvote này chủ yếu là hiệu ứng từ câu trả lời được chấp nhận trên HNQ. Bạn có thể thấy có bao nhiêu người đồng ý với các câu trả lời khác.
kapex

45

Điều này đúng khi bạn sử dụng Notepad, trình soạn thảo văn bản cơ bản của Microsoft đã được cài đặt sẵn trong Windows.

Tuy nhiên, bạn có thể sử dụng trình soạn thảo văn bản nâng cao hơn như PSPad hoặc Notepad ++ (cả xuất sắc và miễn phí) và bạn được chuyển dòng ngắt dòng.

Excel :

Excel

Ô được đánh dấu, sau đó sao chép-dán vào Notepad ++ :

Notepad ++

Cùng một nội dung được dán vào Notepad (trình chỉnh sửa mặc định của Windows):

WindowsNotpad

Lưu ý rằng trong cả hai trường hợp, dấu ngoặc kép được thêm tự động!

Các trình soạn thảo tốt hơn cung cấp cho bạn tùy chọn để hiển thị các ký tự điều khiển, chẳng hạn như LineFeed (LF) và CarriageReturn (CR). Trong Notepad ++, nó trông giống như:

Notepad ++ có liên kết

Như một kết luận: chọn công cụ của bạn tùy thuộc vào nhu cầu của bạn. Nếu bạn cần các ranh giới ô được bảo tồn trong trình chỉnh sửa, nhưng nội dung ô có thể bị thay đổi một chút, hãy sử dụng Notepad. Nếu bạn cần nội dung ô không bị ảnh hưởng bao gồm ngắt dòng và tỷ lệ tái tạo 1: 1 của ranh giới ô là không quan trọng, hãy sử dụng trình chỉnh sửa khác.

Xử lý hàng loạt dữ liệu đó

Nếu bạn cần cả viền ô và nội dung ô được bảo tồn cùng lúc 1: 1, bạn có thể gặp sự cố.

Có thể có nhiều giải pháp thông minh hơn, nhưng những gì tôi đã làm trong những trường hợp như vậy là viết một chương trình nhỏ bằng bất kỳ ngôn ngữ nào (VBA, Python hoặc bất cứ thứ gì bạn thích nhất) để đọc nội dung và thêm chuỗi giữ chỗ cho ngắt dòng (một cách đơn giản như "### Linebreak ###", sau này có thể được thay thế lại bằng các ký tự điều khiển CR và LF. Tất nhiên, đây là công việc khó khăn sau đó và chỉ có ý nghĩa nếu bạn phải xử lý một lượng lớn dữ liệu.

Bạn cũng có thể gặp vấn đề với dấu ngoặc kép được thêm vào. Những cái nhìn đầu tiên có thể hữu ích để duy trì ranh giới của tế bào ngay cả khi ngắt dòng được bao gồm. Tuy nhiên, ô của bạn có thể có dấu ngoặc kép là một phần của nội dung gốc và sau đó bạn gặp vấn đề mới. Có nhiều giải pháp cho vấn đề này, sau đó, nhưng nó cần sự chú ý của bạn.


12
Notepad ++ cho thấy CRLFthực sự có bởi vì nó nhìn thấy LFvà cho rằng nó được coi là đầy đủ CRLFvà chuyển đổi nó.
3D1T0R

@ 3D1T0R Tôi nghi ngờ rằng đó là vì việc trả lại xe không có nguồn cấp dữ liệu sẽ bị ảnh hưởng. Nó sẽ là không gian thú vị hiệu quả mặc dù.
Stian Yttervik

4
@ 3D1T0R: tùy thuộc vào cài đặt kết thúc dòng Notepad ++. Bạn có thể "dán nhị phân" để giữ định dạng Excel gốc, đây thực sự chỉ là một bản LF.
Thomas Weller

1
Đây phải là câu trả lời được chấp nhận
ChatterOne

1
Xin lưu ý rằng Notepad trong Windows 10 phiên bản 1809 có tùy chọn sử dụng LF dưới dạng ngắt dòng (thay vì CR-LF). Nếu bạn sử dụng điều đó, sẽ không có chuyển đổi nhưng ngắt dòng vẫn được hiển thị đúng.
Erik A

34

Câu trả lời của Keltari đưa ra lý luận hợp lý, trong khi câu trả lời này tập trung vào sự khác biệt kỹ thuật.

Có ba hình thức ngắt dòng khác nhau được sử dụng trong điện toán:

  • Kết thúc dòng Unix và macOS 10.0+ sử dụng ký tự nguồn cấp dữ liệu ( LF)
  • Các kết thúc dòng Macintosh (trước macOS 10.0) sử dụng ký tự trả về vận chuyển ( CR)
  • Kết thúc dòng Windows sử dụng kết hợp các ký tự dòng trả về và dòng cấp dữ liệu ( CRLF)

Đây là một nắm giữ từ cách mà các nhà văn loại làm việc.

Excel sử dụng kết hợp các ngắt dòng này để biểu diễn các ô có nhiều dòng:

  • Các tế bào được phân tách bởi các Tabnhân vật.
  • Các hàng được phân cách bởi các CRLFký tự.
  • Các ô đa dòng phân tách từng dòng chỉ bằng LFký tự.

Điều này trở nên rõ ràng khi bạn lưu sổ làm việc của bạn dưới dạng .txttệp và mở nó bằng trình soạn thảo văn bản hỗ trợ hiển thị các ký tự này.

Excel

Notepad ++

Notepad chỉ xử lý CRLFdưới dạng dòng mới và bỏ qua LFhoặc CRtự chúng. Họ vẫn còn trong tài liệu, nhưng không thể nhìn thấy bằng bất kỳ cách nào.

Lưu ý: Bạn sẽ không thấy điều này khi dán qua lại, vì Notepad ++ sẽ tự động điều chỉnh các kết thúc dòng cho bạn, trong khi Notepad thông thường thì không.


3
Bạn cũng nên đề cập đến rằng LF thực sự vẫn còn hiện diện khi dán vào notepad, notepad đơn giản là không hiển thị nó rõ ràng. .
3D1T0R

3
Lưu ý rằng đây chỉ là cách Excel xuất sổ làm việc sang tệp văn bản. Đối với các tệp xlsx, các dòng ngắt trong một chuỗi thực sự được biểu thị bằng CRLF.
kapex

3
Thật thú vị, hoàn toàn có thể xây dựng một ô "thực sự" chứa CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Các ngắt dòng được tạo bởi các công thức không hiển thị trong excel, nhưng hoạt động tốt nếu được sao chép và sau đó dán qua "giá trị dán". Một giá trị được dán từ nhập thủ công "A<CRLF>B"vào notepad và sao chép cũng sẽ giữ lại CRLF.
Random832

3
@ 3D1T0R là đúng. Cố gắng sao chép một ô Excel đơn có văn bản "a \ nb" (trong đó "\ n" đại diện cho một dòng mới) vào Notepad. Bạn sẽ thấy "ab" trong Notepad (có dấu ngoặc kép). Nhưng nếu bạn đặt dấu mũ ở phía trước chữ "a" và nhấn phím mũi tên phải trên bàn phím ba lần, bạn sẽ thấy rằng có một ký tự có độ rộng bằng không vô hình giữa "a" và "b"! Thật vậy, bạn cũng có thể sử dụng phím Shift để chọn nó và sao chép nó vào bảng tạm!
Andreas Rejbrand

2
@AndreasRejbrand: Tôi đã sử dụng kỹ thuật này một số lần để tạo các tệp văn bản với LFEOL có thể đọc được nhanh chóng. tức Tìm một LFnhân vật, chọn nó, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Sau đó lặp đi lặp lại F3, Entercho đến khi kết thúc. [Chỉnh sửa: <kbd> không hoạt động trong nhận xét?]
3D1T0R

1

Excel sử dụng LF để biểu thị các dòng mới trong một ô. Notepad không coi đây là một dòng mới vì Windows nói chung sử dụng CRLF cho các dòng mới.

Notepad ++ thông minh hơn Notepad tương đối đơn giản và do đó cũng diễn giải LF như một dòng mới.


Tôi không sử dụng Notepad ++, nhưng vì tò mò: điều gì xảy ra nếu bạn có một bảng Excel bao gồm ít nhất hai hàng chứa một ô đa dòng và sao chép-dán vào Notepad ++?
Andreas Rejbrand

1
@AndreasRejbrand Các ô đa dòng sẽ được bọc "và Notepad ++ sẽ chuẩn hóa tất cả các kết thúc dòng để khớp. Xem tại đây . Thay vào đó, nếu bạn lưu dưới dạng .txtvà mở trong Notepad ++, các ô đa dòng sẽ LFchỉ có. Xem tại đây .
Worthwelle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.