Mengapa jeda baris Excel tidak ditransfer ke Notepad?

31

Saat menyalin sel dengan jeda baris di Excel dan menempelkannya ke Notepad, teks ditempelkan ke satu baris. Mengapa demikian?

Kyle Dixon
sumber
2
Halo, selamat datang di superuser! Cobalah untuk memberikan detail sebanyak mungkin sehingga Anda bisa mendapatkan jawaban yang lebih detail untuk pertanyaan Anda. Kepala untuk menanyakan halaman pertanyaan Anda sendiri untuk tips berguna untuk membantu Anda mengajukan pertanyaan terbaik. Saya menguji ini dengan Excel 2013 dan Notepad ++ dan itu berfungsi dengan baik, tapi saya bisa mereplikasi masalah Anda yang dijelaskan dengan aplikasi Notepad biasa yang datang dengan OS Windows dan itu tidak berfungsi.
angelofdev
Perhatikan bahwa clipboard dapat mendukung beberapa rasa dari potongan yang sama (teks mentah hingga banyak metadata tentang dari mana asalnya). Terserah program penerima untuk menentukan mana yang paling disukai. Notepad tidak terlalu pintar.
Thorbjørn Ravn Andersen

Jawaban:

27

Ini karena sifat cara kerja spreadsheet. Bayangkan Anda memiliki spreadsheet yang penuh dengan data. Jika Anda harus menyalin seluruh baris data, lalu tempel ke Notepad, semua data itu harus dalam satu baris. Ini karena jika Anda menyalin baris data lain dan menempelkannya, baris data berikutnya harus berada pada satu baris. Jika ada jeda baris di baris pertama yang Anda salin, data tidak akan lagi berada dalam dua baris linier. Jika Anda menyalin data dari Notepad dan kembali ke spreadsheet, itu tidak akan menempel dengan benar.

Keltari
sumber
6
Jawaban ini salah. Coba simpan notepad Anda setelah menempelkan teks dengan jeda baris. Kemudian buka file dengan wordpad saja. Hanya bug di notepad versi lama . Anda harus menandai jawaban yang lain sebagai benar.
Zak
@ Zak Anda salah. Inilah cara menempelkan dari Excel ke editor teks sederhana apa pun. Artikel yang Anda tautkan, tidak ada hubungannya dengan bug, tetapi tentang Notepad yang menambahkan dukungan untuk pengembalian kereta Unix dan umpan baris.
Keltari
4
@Keltari Sebenarnya tidak, @Zak benar. Untuk beberapa alasan ketika Anda menambahkan satu baris di Excel (menggunakan Alt+Enter), hanya 0xA yang dimasukkan, bukan 0xD 0xA penuh, yang berarti LF, bukannya CR/LF. Excel menginterpretasikan ini dan menunjukkan jeda baris, sedangkan notepad biasa tidak, karena ia mengharapkan CR/LF. Itu perbedaan dalam format yang terdeteksi lebih dari bug, tapi tetap saja, itulah alasan yang benar.
ChatterOne
4
@Keltari Tidak ada yang membantah. Gunakan editor biner dan lihat apa yang tertulis dalam file.
ChatterOne
1
@Keltari Jujur, upvotes ini sebagian besar efek dari menjadi jawaban yang diterima pada HNQ. Anda dapat melihat berapa banyak orang yang setuju dengan jawaban yang lain.
kapex
45

Ini benar ketika Anda menggunakan Notepad, yang merupakan editor teks dasar Microsoft yang sudah diinstal sebelumnya di Windows.

Namun, Anda dapat menggunakan editor teks yang lebih canggih seperti PSPad atau Notepad ++ (keduanya luar biasa, dan gratis), dan Anda mendapatkan jeda baris Anda ditransfer.

Excel :

Unggul

Sel ditandai, lalu salin-tempel ke Notepad ++ :

Notepad ++

Konten yang sama disisipkan ke Notepad (editor default Windows):

WindowsNotpad

Perhatikan bahwa dalam kedua kasus, tanda kutip ditambahkan secara otomatis!

Editor yang lebih baik memberi Anda juga opsi untuk menampilkan karakter kontrol seperti LineFeed (LF) dan CarriageReturn (CR). Di Notepad ++ ini terlihat seperti:

Notepad ++ withcontrochars

Sebagai kesimpulan: pilih alat Anda tergantung pada kebutuhan Anda. Jika Anda membutuhkan batas sel yang dipertahankan dalam editor, tetapi konten sel mungkin sedikit diubah, gunakan Notepad. Jika Anda perlu konten sel tidak tersentuh termasuk jeda baris, dan 1: 1-reproduktifitas batas sel tidak penting, gunakan editor lain.

Pemrosesan massal data tersebut

Jika Anda membutuhkan batas sel dan konten sel dipertahankan 1: 1 secara bersamaan, Anda mungkin mengalami masalah.

Mungkin ada solusi yang lebih cerdas, tetapi yang saya lakukan dalam kasus seperti itu adalah menulis sebuah program kecil dalam bahasa apa pun (VBA, Python, atau apa pun yang paling Anda sukai) yang membaca konten dan menambahkan string placeholder untuk jeda baris (sesuatu yang sederhana seperti "### Linebreak ###", yang nantinya dapat digantikan oleh karakter kontrol CR dan LF. Tentu saja, ini adalah pekerjaan fiddly dan masuk akal hanya jika Anda harus memproses data dalam jumlah besar.

Anda mungkin mengalami masalah juga dengan tanda kutip yang ditambahkan. Sekilas ini mungkin berguna untuk mempertahankan batas sel bahkan ketika garis putus dimasukkan. Namun, sel Anda mungkin memiliki tanda kutip bagian dari konten asli, dan kemudian Anda mendapatkan masalah baru. Ada berbagai solusi untuk ini, tetapi perlu perhatian Anda.

Christian Geiselmann
sumber
12
Notepad ++ menunjukkan CRLFada sebenarnya karena ia melihat LFdan menganggap itu seharusnya penuh CRLFdan mengubahnya.
3D1T0R
@ 3D1T0R Saya menduga itu karena carriage return tanpa line feed akan terbaca. Akan menyenangkan ruang efisien.
Stian Yttervik
4
@ 3D1T0R: itu tergantung pada pengaturan akhir baris Notepad ++. Dimungkinkan untuk "paste biner" untuk mempertahankan format Excel asli, yang memang hanya LF.
Thomas Weller
1
Ini harus menjadi jawaban yang diterima
ChatterOne
1
Perhatikan bahwa Notepad di bawah Windows 10 versi 1809 memiliki opsi untuk menggunakan LF sebagai linebreak (bukan CR-LF). Jika Anda menggunakannya, tidak ada konversi tetapi linebreak masih ditampilkan dengan benar.
Erik A
34

Keltari 's jawabannya memberikan penalaran logis, sementara jawaban ini berfokus pada perbedaan teknis.

Ada tiga bentuk jeda baris yang digunakan dalam komputasi:

  • Akhir baris Unix dan macOS 10.0+ menggunakan karakter umpan baris ( LF)
  • Akhir baris Macintosh (sebelum macOS 10.0) menggunakan karakter carriage-return ( CR)
  • Ujung baris Windows menggunakan kombinasi karakter carriage-return dan line-feed ( CRLF)

Ini adalah pegangan dari cara penulis jenis bekerja.

Excel menggunakan kombinasi dari pemisah baris ini untuk mewakili sel dengan beberapa baris:

  • Sel dipisahkan oleh Tabkarakter.
  • Baris dipisahkan oleh CRLFkarakter.
  • Sel multiline memisahkan setiap baris hanya dengan menggunakan LFkarakter.

Ini menjadi jelas ketika Anda menyimpan buku kerja Anda sebagai .txtfile dan membukanya dengan editor teks yang mendukung menunjukkan karakter ini.

Unggul

Notepad ++

Notepad hanya memproses CRLFsebagai baris baru dan mengabaikan LFatau CRdengan sendirinya. Mereka masih ada dalam dokumen, tetapi tidak terlihat dengan cara apa pun.

Catatan: Anda tidak akan melihat ini ketika menempel bolak-balik, karena Notepad ++ secara otomatis menyesuaikan ujung garis untuk Anda, sedangkan Notepad biasa tidak.

Worthwelle
sumber
3
Anda juga harus menyebutkan bahwa LF ini sebenarnya masih hadir ketika disisipkan di notepad, notepad hanya tidak menampilkannya tampak. (Ini membuat secara efektif sama dengan ruang nol lebar.) Oleh karena itu mengapa menyalin data yang disisipkan kembali dari notepad ke Excel termasuk jeda baris ini (meskipun Excel tidak secara otomatis mengubah ukuran baris ke mereka).
3D1T0R
3
Perhatikan bahwa ini hanya bagaimana Excel mengekspor buku kerja ke file teks. Untuk file xlsx, jeda baris dalam string sebenarnya diwakili oleh CRLF.
kapex
3
Menariknya, sangat mungkin untuk membangun sel yang "benar-benar" mengandung CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Jeda baris yang dihasilkan oleh rumus tidak terlihat di excel, tetapi berfungsi dengan baik jika disalin dan kemudian disisipkan melalui "nilai tempel". Nilai yang disisipkan dari pengetikan "A<CRLF>B"notepad secara manual dan penyalinan juga akan mempertahankan CRLF.
Random832
3
@ 3D1T0R benar. Cobalah untuk menyalin sel Excel tunggal dengan teks "a \ nb" (di mana "\ n" mewakili baris baru) ke dalam Notepad. Anda akan melihat "ab" di Notepad (dengan tanda kutip). Tetapi jika Anda meletakkan tanda sisipan di depan "a" dan menekan tombol panah kanan pada keyboard Anda tiga kali, Anda akan menemukan bahwa ada karakter lebar nol yang tidak terlihat antara "a" dan "b"! Memang, Anda juga dapat menggunakan tombol Shift untuk memilihnya dan menyalinnya ke clipboard!
Andreas Rejbrand
2
@AndreasRejbrand: Saya telah menggunakan teknik ini beberapa kali untuk membuat file teks dengan LFEOL dapat dibaca dengan cepat. yaitu Cari LFkarakter, pilih, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Kemudian berulang kali F3, Entersampai akhir. [Sunting: <kbd> tidak berfungsi dalam komentar?]
3D1T0R
1

Excel menggunakan LF untuk menunjukkan baris baru di dalam sel. Notepad tidak menganggap ini sebagai baris baru karena Windows pada umumnya menggunakan CRLF untuk baris baru.

Notepad ++ lebih cerdas dari Notepad yang relatif sederhana dan dengan demikian mengartikan LF sebagai baris baru juga.

Benjamin Goodacre
sumber
Saya tidak menggunakan Notepad ++, tetapi karena penasaran: apa yang terjadi jika Anda memiliki tabel Excel yang terdiri dari setidaknya dua baris yang berisi sel multiline dan salin-tempel ke Notepad ++?
Andreas Rejbrand
1
@AndreasRejbrand Sel multiline akan dibungkus "dan Notepad ++ akan menormalkan semua akhir baris agar sesuai. Lihat di sini . Jika Anda menyimpan sebagai gantinya .txtdan membuka di Notepad ++, sel multiline LFhanya akan memiliki . Lihat di sini .
Worthwelle