Saya perlu membuat file untuk Excel, beberapa nilai dalam file ini berisi beberapa baris.
ada juga teks non-Inggris di sana, jadi file tersebut harus Unicode.
File yang saya hasilkan sekarang terlihat seperti ini: (dalam UTF8, dengan teks non-Inggris bercampur dan dengan banyak baris)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Perhatikan nilai multi-baris terlampir dalam tanda kutip ganda, dengan baris harian normal di dalamnya.
Menurut apa yang saya temukan di web ini seharusnya berfungsi, tetapi tidak, setidaknya tidak memenangkan file Excel 2007 dan UTF8, Excel memperlakukan baris ke-3 sebagai baris data kedua bukan sebagai baris kedua dari baris data pertama .
Ini harus dijalankan pada mesin pelanggan saya dan saya tidak memiliki kontrol atas versi Excel mereka, jadi saya perlu solusi yang akan bekerja dengan Excel 2000 dan yang lebih baru.
Terima kasih
EDIT: Saya "memecahkan" masalah saya dengan memiliki dua opsi CSV, satu untuk Excel (Unicode, tab terpisah, tidak ada baris baru di bidang) dan satu untuk seluruh dunia (UTF8, CSV standar).
Bukan apa yang saya cari tetapi setidaknya itu berhasil (sejauh ini)
Jawaban:
Anda harus memiliki karakter spasi di awal bidang SAJA di mana karakter ruang merupakan bagian dari data. Excel tidak akan menghapus spasi terkemuka. Anda akan mendapatkan ruang yang tidak diinginkan di pos dan bidang data Anda. Lebih buruk lagi,
"
yang seharusnya "melindungi" bahwa baris-break di kolom ketiga akan diabaikan karena tidak pada awal bidang.Jika Anda memiliki karakter non-ASCII (dikodekan dalam UTF-8) dalam file, Anda harus memiliki BOM UTF-8 (3 byte,
hex EF BB BF
) di awal file. Kalau tidak, Excel akan menafsirkan data sesuai dengan pengkodean default lokal Anda (misalnya cp1252) alih-alih utf-8, dan karakter non-ASCII Anda akan dibuang ke tempat sampah.Komentar berikut berlaku untuk Excel 2003, 2007 dan 2013; tidak diuji di Excel 2000
Jika Anda membuka file dengan mengklik dua kali pada namanya di Windows Explorer, semuanya berfungsi OK.
Jika Anda membukanya dari dalam Excel, hasilnya bervariasi:
Opsi meliputi:
sumber
EFBBBF
header, digunakan0A
sebagai pemisah baris, dan0D0A
sebagai baris baru di dalam string dalam sel teks.Setelah banyak mengutak-atik, inilah konfigurasi yang berfungsi menghasilkan file di Linux, membaca di Windows + Excel, meskipun format baris baru yang disematkan tidak sesuai dengan standar :
Di Perl, saya menggunakan Text :: CSV untuk melakukan ini sebagai berikut:
sumber
\n
. Terima kasihBaru-baru ini saya memiliki masalah yang sama, saya menyelesaikannya dengan mengimpor file HTML , contoh dasarnya akan seperti ini:
Saya tahu, ini bukan CSV, dan mungkin bekerja secara berbeda untuk berbagai versi Excel, tapi saya pikir ini patut dicoba.
Saya harap ini membantu ;-)
sumber
Perlu dicatat bahwa ketika file .CSV memiliki bidang yang dibungkus dengan tanda kutip ganda yang berisi jeda baris, Excel tidak akan mengimpor file .CSV dengan benar jika file .CSV ditulis dalam format UTF-8. Excel memperlakukan jeda baris seolah-olah itu CR / LF dan memulai baris baru. Spreadsheet rusak. Itu tampaknya benar bahkan jika semi-titik dua digunakan sebagai pembatas lapangan (bukan koma).
Masalahnya dapat diatasi dengan menggunakan Windows Notepad untuk mengedit file .CSV, menggunakan File> Save As ... untuk menyimpan file, dan sebelum menyimpan file, mengubah pengkodean file dari UTF-8 ke ANSI. Setelah file disimpan dalam format ANSI, maka saya menemukan bahwa Microsoft Excel 2013 yang berjalan pada Windows 7 Professional akan mengimpor file dengan benar.
sumber
Baris baru di dalam nilai tampaknya berfungsi jika Anda menggunakan titik koma sebagai pemisah, bukan koma atau tab, dan menggunakan tanda kutip.
Ini berfungsi untuk saya di Excel 2010 dan Excel 2000. Namun, yang mengejutkan, ini hanya berfungsi saat Anda membuka file sebagai spreadsheet baru, bukan ketika Anda mengimpornya ke spreadsheet yang ada menggunakan fitur impor data.
sumber
Pada PC, karakter ASCII # 10 adalah apa yang Anda inginkan untuk menempatkan baris baru dalam suatu nilai.
Namun, begitu Anda masuk ke Excel, Anda perlu memastikan bungkus kata dihidupkan untuk sel multi-baris atau baris baru akan muncul sebagai kotak persegi.
sumber
Ini tidak akan berfungsi jika Anda mencoba mengimpor file ke EXCEL.
Kaitkan ekstensi file csv dengan EXCEL.EXE sehingga Anda dapat memanggil EXCEL dengan mengklik dua kali file csv.
Di sini saya menempatkan beberapa teks diikuti oleh NewLine Char diikuti oleh beberapa teks lagi DAN melampirkan seluruh string dengan tanda kutip ganda.
Jangan menggunakan CR karena EXCEL akan menempatkan bagian dari string di sel berikutnya.
Ketika Anda memanggil EXCEL, Anda akan melihat ini. Anda mungkin harus mengukur tinggi secara otomatis untuk melihat semuanya. Di mana garis putus akan tergantung pada lebar sel.
2
TANGGAL
Berikut kode di Basic
sumber
Saya menemukan ini dan itu berhasil untuk saya
Lalu di mana Anda harus memiliki barang-barang terlampir
.....
Lalu ketika Anda perlu menulis sesuatu - seperti HTML yang menyertakan "Anda bisa melakukan ini
Baris baru diakhiri dengan
. PHP_EOL
Bagian akhir skrip mencetak tautan sehingga pengguna dapat mengunduh file tersebut.
sumber
File UTF yang berisi BOM akan menyebabkan Excel memperlakukan baris baru secara harfiah bahkan di bidang itu dikelilingi oleh tanda kutip. (Diuji Excel 2008 Mac)
Solusinya adalah membuat setiap baris baru menjadi carriage return (CHR 13) daripada feed garis.
sumber
Uji ini: Ini sepenuhnya berfungsi untuk saya: Letakkan baris berikut dalam
xxxx.csv
fileBuka dengan excel.
dalam beberapa kasus akan terbuka secara langsung jika tidak perlu menggunakan kolom untuk konversi data. perluas lebar kolom dan tekan tombol bungkus teks. atau memformat sel dan mengaktifkan bungkus teks.
dan terima kasih atas saran lainnya, tetapi mereka tidak berhasil untuk saya. Saya di windows env murni, dan tidak ingin bermain dengan unicode atau hal lucu lainnya.
Dengan cara ini Anda meletakkan formula dari csv ke excel. Mungkin banyak kegunaan untuk metode kerja ini. (perhatikan = sebelum tanda kutip)
pd: Dalam saran Anda, harap cantumkan beberapa sampel data, bukan hanya kodenya.
sumber
menempatkan "\" di akhir setiap baris sebenarnya memiliki efek dari jeda baris di excel, tetapi dalam .csv menghilang dan meninggalkan kekacauan yang buruk di mana setiap baris terjepit melawan berikutnya tanpa spasi dan tanpa jeda baris
sumber
Cara kita melakukannya (kita menggunakan VB.Net) adalah melampirkan teks dengan baris baru di Chr (34) yang merupakan karakter yang mewakili tanda kutip ganda dan mengganti semua karakter CR-LF untuk LF.
sumber
Biasanya baris baru adalah "\ r \ n". Di CSV saya, saya mengganti "\ r" dengan nilai kosong. Berikut ini adalah kode dalam Javascript:
Ketika saya membuka CSV di MS Excel, itu bekerja dengan baik. Jika nilai memiliki beberapa baris, itu akan tetap dalam 1 sel tunggal di lembar Excel.
sumber
Untuk File Open saja, sintaksnya adalah
Yang penting adalah bahwa tidak ada ruang setelah "," pertama. Biasanya spasi baik-baik saja, dan dipangkas jika string tidak dikutip. Tetapi sebaliknya jahat. Butuh waktu beberapa saat untuk memikirkannya.
Tampaknya tidak masalah jika garis itu diakhiri \ n atau \ c \ n.
Pastikan Anda memperluas bilah rumus sehingga Anda benar-benar dapat melihat teks di dalam sel (dapatkan saya setelah hari yang panjang ...)
Sekarang tentu saja, File Open tidak akan mendukung UTF-8 dengan Benar (kecuali ada yang menggunakan trik).
Excel> Data> Dapatkan Data Eksternal > Dari Teks
Dapat diatur ke mode UTF-8 (itu adalah cara daftar font). Namun, dalam hal ini jalur baru sepertinya tidak berfungsi dan saya tidak tahu cara untuk memperbaikinya.
(Satu hal yang mungkin bahwa setelah 30 tahun MS akan melakukan hal ini dengan benar.)
sumber
Di Excel 365 saat mengimpor file:
Data -> Dari Teks / CSV -> Pilih File> Transform Data -> Konfigurasi Sumber Data -> Pilih Sumber Data -> Klik Edit Sumber -> Pada dropdown break line pilih Abaikan line break di dalam tanda kutip.
Teks di atas diterjemahkan dari bahasa Portugis sehingga kata-katanya mungkin berbeda dalam bahasa Inggris.
sumber
Anda bisa melakukan selanjutnya
"\"Value3 Line1 Value3 Line2\""
. Ini berfungsi untuk saya menghasilkan file csv di javasumber
Berikut ini pendekatan menarik menggunakan JavaScript ...
sumber
Mencetak baris HTML baru
<br/>
ke dalam konten dan membuka excel akan bekerja dengan baik pada excel mana punsumber
Anda bisa menggunakan pintasan keyboard ALT + Enter.
sumber