Bagaimana Anda memaksa excel untuk mengutip semua kolom file CSV?

89

Excel hanya menempatkan tanda kutip di sekitar bidang tertentu, bagaimana cara memaksa excel untuk menyimpan file CSV dengan tanda kutip di setiap kolom?

Michael Shnitzer
sumber

Jawaban:

44

Jika Anda membuka file XLS di LibreOffice atau OpenOffice, lalu Save As .... dan pilih Text CSV, itu akan menghasilkan file CSV yang juga menyertakan tanda kutip sebagai pembatas. Misalnya: "Smith", "Pete", "Kanada" "Jones", "Mary", "Inggris"

Centang saja kotak "Kutip semua sel teks": Ekspor ke CSV dengan LibreOffice

Untuk juga mengutip bidang angka, sorot rentang sel Anda dan ubah pemformatan sel menjadi "teks" sebelum disimpan.

Pete
sumber
7
Meskipun bukan jawaban untuk pertanyaan spesifik, ini adalah solusi yang lebih sederhana daripada mencoba membuat klien saya menggunakan makro!
Duncanmoo
Saya lelah menggunakan metode ini setiap hari, itu sebabnya saya ada di sini
vladkras
Saya pikir ini adalah solusi termudah dan paling nyaman karena OpenOffice adalah perangkat lunak portabel. Anda tidak perlu menginstal apa pun atau menulis kode apa pun.
Scott Chu
jawaban terbaik !!
rajya vardhan
20
Bukan jawaban sama sekali. Pertanyaannya secara eksplisit tentang MS Excel
vladkras
43

Halaman ini juga memiliki solusi yang datang langsung dari mulut kuda:

http://support.microsoft.com/kb/291296/en-us

Jika tautannya menurun, topik yang dicari adalah:

"Prosedur untuk mengekspor file teks dengan pembatas koma dan kutipan di Excel" dan / atau "Q291296"

tl; dr: gunakan makro mereka

sahmeepee
sumber
10
Sesuatu yang mungkin perlu diperhatikan adalah bahwa makro menggunakan Integer untuk nilai baris dan kolom. Anda akan terkena kesalahan jika mencoba mengekspor lebih dari 32768 baris. Mengubah tipe data menjadi Long, misalnya, akan memperbaiki masalah itu.
Dan
Tempat yang bagus (+1). Sepertinya mereka belum memperbarui kode sejak pertama kali ditulis untuk versi Excel dengan maksimal hanya 32768 baris.
sahmeepee
9
Saya mengambil kebebasan untuk membuat intisari dengan makro ini, dan beberapa perbaikan: gist.github.com/fabriceleal/7803969
fableal
@fabel cuplikan hebat! Pantas dijawab.
xiankai
Office 2010, masih meluap pada jumlah tinggi baris yang dipilih, seperti yang disebutkan @sahmeepee.
access_granted
18

Saya menemukan solusi mudah ini:

  1. Sorot sel yang ingin Anda tambahkan tanda kutip.
  2. Klik kanan dan pergi ke: Format Cells → Tab: Number → Category: Custom
  3. Rekatkan yang berikut ini ke bidang Jenis : "''"@"''"(lihat detail di bawah)
  4. Klik "oke"

String yang Anda tempel adalah "''"@"''"kutipan ganda, kutipan tunggal, kutipan tunggal, kutipan ganda, @ simbol, kutipan ganda, kutipan tunggal, kutipan tunggal, kutipan ganda.

Diedit untuk Excel 2010 dari informasi yang ditemukan di sini .

Michael
sumber
Hmmm .. itu memberi saya 'ITEM' '(dua tanda kutip tunggal) daripada "(satu tanda kutip ganda). Saya baru saja melakukan pencarian dan menggantinya untuk memperbaikinya.
Clay Nichols
6
Formatnya seharusnya \ "@ \"
manat
Jawaban ini sebenarnya adalah jawaban yang sempurna jika Anda menggunakan LibreOffice - ini benar-benar tidak memiliki opsi "teks" di menu Format> Format Angka, meskipun dokumentasinya bersikeras bahwa ada opsi. Jika Anda mengklik kanan "Format Sel" di LibreOffice, Anda diberikan daftar opsi interpretasi sel LENGKAP - daripada 6 opsi yang agak tidak berguna yang disajikan dalam dropdown.
1owk3y
@ manat menjawab, tetapi tanpa tanda kutip:\"@\"
MSC
12

Powershell tampaknya membuang dengan benar. jadi sesuatu seperti

mencari powershell.exe di mesin windows jika Anda tidak tahu PowerShell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

Semoga ini bisa membantu seseorang.

ssaviers
sumber
Untuk kenyamanan, Shift + klik kanan di folder tempat CSV Anda disimpan dan pilih Buka jendela PowerShell di sini , yang menyederhanakan perintah import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. ingatlah untuk menggunakan tanda kutip tunggal di sekitar nama file dengan spasi atau karakter khusus lainnya.
Walf
4

Ini yang paling mudah bagi saya: Saya mengimpor spreadsheet ke Access 2010 dan mengekspornya dari sana sebagai file teks yang dibatasi. Memberi saya tanda kutip di sekitar bidang saya. Membutuhkan kurang dari satu menit untuk baris 42k sekarang karena saya memiliki langkah-langkah ke bawah.

pengguna326114
sumber
Satu-satunya kelemahan adalah jika bidang itu sendiri berisi penawaran ganda.
access_granted
3

Saya telah menemukan pekerjaan lain yang tidak melibatkan Makro VBA, tetapi yang membutuhkan Notepad ++ atau editor teks berbasis makro yang serupa.

Ekspor file Anda sebagai teks yang dipisahkan Tab, kemudian buka file yang diekspor di dalam Notepad ++. Ganti semua instance karakter 'tab' dengan teks "," (yaitu kutipan ganda, koma, kutipan ganda) dan kemudian gunakan makro lain untuk awalan dan akhiran setiap baris teks dengan tanda kutip ganda.

Sedikit macet tapi saya menemukannya lebih cepat daripada membuat makro VBA berfungsi.

Blueacid
sumber
1
Jika Anda ingin melakukannya di Notepad ++, sebaiknya gunakan pencarian ekspresi reguler dan ganti, lalu Anda bisa melakukan semua 3 operasi penggantian (mulai dari baris, tab, dan akhir baris) di satu tempat
sahmeepee
3

Sorot sel yang ingin Anda tambahkan tanda kutip. Buka Format -> Sel -> Salin Khusus / Tempel yang berikut ke dalam bidang Jenis: \ "@ \" Klik "oke". Berbahagialah Anda tidak melakukan semuanya dengan tangan.

Dari: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/

Steve Coleman
sumber
1
Ini bekerja dengan baik untuk alpha - Anda akan memerlukan \ "# \" untuk kolom dengan nilai numerik.
DropHit
Antara \ "@ \" dan \ "# \" ini berfungsi. Tapi saya masih harus mengedit header di Notepad ++ untuk kolom numerik, dan kemudian mengganti semua "" "dengan". Menyedihkan sekali.
Gary
Belum mencobanya .. tetapi jika Anda membuat csv tidak bisakah Anda hanya mengubah kolom menjadi teks dan menggunakan \ "@ \"
Steve Coleman
2
  1. Sorot sel yang ingin Anda tambahkan tanda kutip.
  2. Klik kanan dan pergi ke: Format Cells → Tab: Number → Category: Custom
  3. Rekatkan yang berikut ini ke bidang Jenis: "''"@"''"(lihat detail di bawah)
  4. Klik "oke"
  5. Buka file .csv dengan Notepad (atau setara)
  6. Ganti semua ' '(kutipan tunggal berulang) dengan "(kutipan ganda)
  7. Menggantikan semua ;
  8. Simpan file .csv yang direvisi
eric
sumber
1

Jika Anda menggunakan Notepad ++ untuk menambahkan tanda kutip di awal setiap baris, cukup buka file csv yang diekspor, letakkan kursor Anda di baris 1, kolom 1, lalu klik menu Edit / Editor Kolom ... , di bidang ' Teks yang akan disisipkan ', masukkan " , maka awal setiap baris akan memiliki kutipan, maka Anda dapat menggunakan ekspresi reguler untuk mencari / mengganti semua tab.

Michael Zhang
sumber
0

Untuk pengguna Windows

  1. "Simpan sebagai" file Excel sebagai CSV
  2. Buka file yang disimpan dengan Mircrosoft Works Spreadsheet
  3. "Simpan sebagai" spreadsheet sebagai CSV
  4. Semua bidang non-numerik sekarang memiliki "di sekitar mereka

Perhatikan ini bukan kutipan keyboard yang sama yang memiliki variasi forward & backward.
Jadi jika menggunakan CSV untuk memuat ke dalam tabel Mysql, potong dan tempel ke parameter ENCLOSED jika tidak, Anda akan bertanya-tanya mengapa Anda mendapatkan pesan#1083 - Field separator argument is not what is expected

Greg
sumber
3
Pekerjaan Mircrosoft <-? Apa kamu yakin akan hal itu?
nixda
0

Saya menggunakan pendekatan di bawah ini untuk mengambil tiga kolom di Excel dan membangun string di kolom keempat.

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Masalah saya dengan "''"@"''"pendekatan ini adalah kolom kedua dari data saya adalah angka yang "''"@"''"tidak didekati oleh pendekatan tersebut. Terkadang kolom kedua kosong tetapi saya perlu memastikan itu diwakili dalam file teks akhir.

pengguna415149
sumber
0

Cara lain jika Anda memiliki akses MS (I have ver 2007) impor file kemudian ekspor sebagai file teks. Kemudian ubah .txt ke .csv. Catatan semua bidang angka tidak akan memiliki tanda kutip ganda di sekitarnya sehingga jika Anda juga perlu tanda kutip ganda di sekitar angka, maka saat di Access ubah bidang dari bidang angka ke bidang teks.

Dekan
sumber
0

Mengekspor string yang dipisah koma dan dikutip dapat dilakukan hanya dengan Excel 2016 dan Notepad, menggunakan salinan data, rumus, ekspor, perubahan properti file, penggantian Notepad, menyimpan file yang diekspor, dan pembersihan. Masing-masing adalah langkah sederhana. Secara terperinci:

  1. Salin kolom yang akan diekspor ke lembar perantara baru untuk mempertahankan yang asli dan sebagai cadangan, dengan lembar baru yang akan dihapus nanti agar meninggalkan spreadsheet seperti sebelumnya.

  2. Letakkan karakter lain yang tidak muncul, ucapkan '#' atau ';-)' di setiap ujung string di kolom mengatakan A dengan rumus =concat("#",trim(A1),"#"), letakkan rumus di semua baris kolom lain.

    • Kolom yang berdekatan dapat dilakukan pada saat yang sama tetapi jangan mengutip angka untuk menghindari agar mereka dibaca sebagai string.
    • Trim menghindari ruang trailing yang dapat memicu perilaku ekspor yang tidak terampil.
    • String tidak boleh mengandung '"' yang dapat mengganggu impor.
  3. Salin kembali kolom baru ke atas ..., menggunakan metode '123' agar tidak membawa formula.

  4. Ekspor lembar sebagai file CSV, untuk memasukkan koma di antara bidang termasuk angka.

  5. Ubah properti file.csv sehingga dapat dibuka dengan Notepad.

  6. Gunakan Notepad untuk mengganti karakter yang berubah-ubah dengan '"'.

  7. Meskipun tampaknya masuk akal untuk menggunakan "sebagai karakter sewenang-wenang, itu harus dimasukkan ke sel yang berbeda, katakan '$ A $ 50', dan kemudian apa yang muncul di ekspor adalah" "" "', tampaknya pemicu lain yang tidak nyaman.

  8. Dalam notepad file harus disimpan, menjadi file * .txt yang akan diimpor dan perantara * .csv dihapus.

  9. Dengan pembersihan misi lembar kerja lembar tambahan tercapai.

Mungkin alat ekspor akses suatu hari dapat tertanam di Excel. Pendekatan yang lebih umum di antara program-program yang menggunakan cut and paste, akan memiliki opsi tempel termasuk pilihan cara untuk menafsirkan struktur output dan menyediakan pembatas.

HGB
sumber
0

Jawaban Michael 21 Agustus 2014 sangat membantu. Namun, saya harus melakukan satu atau dua langkah tambahan:

  1. Buka file .csv dengan Notepad (atau setara)
  2. Ganti semua '' (kutipan tunggal berulang) dengan "(kutipan ganda)
  3. Menggantikan semua ; (digunakan sebagai pembatas dalam versi Jerman Excel) dengan,
  4. Simpan file .csv yang direvisi
sebuah CVn
sumber
Tidak ada penjelasan untuk downbvote? Par untuk kursus, tetapi bagaimana orang lain diharapkan untuk belajar? ANDA mungkin berpikir dengan jelas apa yang salah, Tuan Downvoter, tetapi mungkin tidak jelas bagi semua orang. Kami mencoba membangun komunitas di sini, dan Anda tidak membantu.
Mawg
-1

Ini resep saya. Aku benci harus melakukan ini, tetapi aku tidak punya cara yang lebih baik. Dalam kasus saya, saya tidak mendapatkan penawaran di bidang apa pun. Saya juga perlu menggunakan pengkodean UTF-8 dan; bukannya tab, jadi ini yang akhirnya saya lakukan.

CATATAN: karena ilegibilitas menempatkan tanda kutip ganda yang dilingkupi oleh tanda kutip tunggal dan sebagainya, saya sengaja menggunakan "format keyboard" untuk menunjukkan penekanan tombol dan karakter serta string literal.

  1. Masukkan kolom baru sebelum yang lain di spreadsheet Excel Anda (klik pada judul kolom 1, seluruh kolom akan dipilih, klik kanan, pilih "masukkan").
  2. Pilih seluruh rentang sel kosong dari kolom baru (dipilih secara default). Di bidang rumus, masukkan apa pun yang Anda inginkan: misalnya xxx,. Tekan CTRL+ enteruntuk mengisi seluruh kolom dengan nilai yang sama.
  3. Simpan file sebagai Teks Unicode (* .txt).
  4. Buka file di Notepad ++.
  5. Tekan CTRL+ funtuk membuka Cari / Ganti.
  6. Buka tab Ganti.
  7. Dalam "Mode pencarian" pilih "Diperpanjang (\ n, \ r, \ t, \ 0, \ x ...)".
  8. Di bidang "Cari", masukkan xxxplus tabpenekanan tombol.
  9. Di bidang "Ganti", masukkan "(penawaran ganda).
  10. Tekan Ganti Semua.
  11. Di bidang "Cari", pasang tabketukan tombol.
  12. Dalam "Ganti" satu, masukkan ";"(kutipan ganda, titik koma, kutipan ganda).
  13. Tekan Ganti Semua.
  14. Kamu hampir selesai. Untuk kutipan ganda terakhir, masukkan \rdi bidang "Cari" dan "\r"(kutipan ganda, backslash, kutipan ganda) di "Ganti". Tekan Ganti Semua.
  15. Selama Anda tidak menggunakan karakter Cina, dll., Anda dapat mengubah pengodean ke UTF-8 dan menyimpan file dengan aman.
Pere
sumber
-1

Saya telah mengalami masalah ini berkali-kali. Berikut adalah solusi paling sederhana yang saya buat.

  1. Simpan file sebagai Excel
  2. Impor Excel ke tabel Access
  3. Ekspor tabel dari Akses ke file teks.

Akses akan memungkinkan Anda menentukan pembatas ekspor sebagai bidang teks koma dan kualifikasi dengan tanda kutip. Di panduan ekspor, Anda bisa menentukan pembatas atau karakter apa pun di sekitar string yang Anda inginkan.

Anda mungkin perlu membuat kueri Access untuk mengatur bidang dalam urutan tertentu atau menyembunyikan bidang ID-otomatis yang ditambahkan oleh Access.

Juga ... setelah diekspor ke CSV, JANGAN buka lagi di Excel. Jika Anda ingin melihat hasilnya, buka di notepad. Excel memiliki kecenderungan untuk mengacaukan data csv .... Saya pikir itu adalah bidang yang diisi dengan nol di depan jika saya mengingat dengan benar.

Gunther
sumber
Ini tampaknya menggandakan informasi dalam jawaban user326114.
fixer1234
-1

Berikut cara menggunakan aplikasi OpenOffice untuk mengambil spreadsheet Excel dan membuat file teks (csv) dengan tanda kutip di sekitar setiap bidang teks.

Buka file Excel dengan OpenOffice, lalu ikuti langkah-langkah ini:

File> Simpan Sebagai

Berikan nama baru untuk file yang akan Anda buat

Untuk Jenis File, pilih "Tes CSV (.csv)"

aktifkan kotak centang "Edit Pengaturan Filter"

klik "Simpan"

pilih "Simpan format saat ini"

Pembatas bidang harus berupa koma:,

Pembatas teks harus tanda kutip: "

centang kotak "Kutip semua sel teks"

klik "OK"

Ini berhasil untuk saya!

Mary H
sumber