Meskipun saya mencoba menghindarinya, kadang-kadang saya harus membuka file CSV di Excel. Ketika saya melakukannya, itu memformat kolom yang berisi angka, yang membuatnya tidak berguna untuk tujuan saya. Sejauh yang saya tahu, satu-satunya cara untuk mencegah hal ini terjadi saat impor adalah dengan mengganti nama file sehingga ekstensi tersebut bukan .csv dan gunakan panduan impor untuk menentukan format setiap kolom secara individual. Untuk file dengan 50-60 kolom, ini tidak praktis.
Karena setiap jawaban untuk pertanyaan yang sering diajukan di internet ini menyarankan beberapa cara untuk mengkonversi angka yang diformat kembali setelah file dibuka (yang tidak akan bekerja untuk saya - saya ingin menyelesaikan masalah umum, bukan beberapa kasus tertentu) atau secara manual memilih jenis format setiap kolom (yang tidak ingin saya lakukan), saya mencari cara untuk mengatur preferensi atau gaya global sehingga semua kolom dari semua file CSV yang dibuka selalu diformat sebagai teks. Saya tahu tentang "melindungi" angka-angka dengan tanda kutip juga, tetapi file yang saya dapatkan tidak datang seperti itu dan saya berharap untuk menghindari keharusan untuk melakukan pra-proses file sehingga Excel tidak mengacaukannya.
Apakah ada cara untuk melakukan ini secara spesifik : Selalu memformat semua kolom dalam file CSV yang dibuka sebagai teks, tanpa secara manual memilih setiap kolom setiap kali selama impor?
Saya menggunakan Excel 2003, tetapi saya akan mengambil jawaban untuk tahun 2007 jika itu yang Anda tahu.
sumber
Jawaban:
Ini bekerja:
Pemakaian:
File yang dipisahkan koma sekarang terbuka sebagai lembar Excel dengan semua kolom diformat sebagai teks.
Perhatikan bahwa solusi wizard @ Wetmelon berfungsi dengan baik, tetapi jika Anda membuka banyak file, Anda mungkin, seperti saya, menjadi lelah, setiap kali, menggulir ke kolom 60 untuk menggeser-kliknya.
EDIT @GSerg menyatakan dalam komentar di bawah bahwa ini "tidak berfungsi" dan "makan spasi dan memimpin nol". Saya hanya akan mengutip komentar untuk pertanyaan, yang lebih deskriptif:
Jadi kode di atas "berfungsi", tetapi terbunuh oleh perilaku Excel yang konyol ini. Apa pun cara Anda memotongnya, Anda harus mengubah ekstensi menjadi sesuatu selain ".csv", maaf! Setelah itu, Anda bebas di rumah.
sumber
Workbooks.OpenText
memiliki kekurangan dengan desain (Lihat jawaban saya di bawah). GunakanQueryTables
sebagai gantinya.Cara membuka CSV di Excel
Cara yang baik
Excel → Data → Dapatkan data eksternal → Pilih semua kolom dengan Shiftdan pilih Teks
Terbalik: Memperlakukan semua nilai dengan benar sebagai teks tanpa kecuali
Kelemahan: Lebih banyak langkah daripada klik dua kali sederhana
Jalan yang buruk
Buka CSV dengan Klik Dua Kali atau dialog Buka dengan Excel
Kelemahan: Penangan CSV internal Excel salah mengartikan nilai dengan tanda
-
atau=
tanda sebagai rumus alih-alih teksKelemahan: Anda akan kehilangan nol di depan dari nilai biner seperti
0001
karena format kolom yang terdeteksi otomatis oleh ExcelCara yang bagus (untuk VBA)
Gunakan QueryTables (mitra VBA untuk
Get external data
) → kode contohTerbalik: Memperlakukan semua nilai dengan benar sebagai teks tanpa kecuali
Kelemahan: Sedikit kode lebih banyak daripada
OpenText
metodeCara buruk (untuk VBA)
Gunakan
Workbooks.OpenText
metode → Kode contohKelemahan: Metode ini masih menggunakan pengontrol impor CSV internal Excel dengan semua kekurangannya
Kelemahan: Selain itu,
fieldinfo
parameterOpenText
diabaikan jika ekstensi CSV. Biasanya, parameter ini memungkinkan Anda memilih setiap format kolom, tetapi tidak jika ekstensi CSV. Anda dapat membaca lebih lanjut tentang perilaku ini di Stack OverflowMengganti nama sementara ekstensi sumber dari CSV ke TXT dan kemudian kembali ke CSV adalah solusi yang valid jika Anda memiliki kontrol penuh atas file sumber
Metode tambahan
Jika Anda memiliki akses ke sumber yang membuat CSV Anda, Anda dapat mengubah sintaks CSV.
Lampirkan setiap nilai dengan tanda kutip ganda dan
="00001"
awali tanda sama dengan atau tambahkan satu tab ke setiap nilai. Kedua cara akan memaksa Excel untuk memperlakukan nilai sebagai teksKonten CSV asli
CSV di Excel saat dibuka melalui klik ganda
Perhatikan bagaimana baris 2 (metode kutipan ganda) dan baris 3 (metode tab) tidak diubah oleh Excel
Buka CSV di Notepad dan salin & tempel semua nilai ke Excel. Kemudian gunakan Data - Teks ke KolomKelemahan: Teks dalam Kolom untuk mengubah format kolom dari umum ke teks menghasilkan hasil yang tidak konsisten. Jika nilai berisi
-
dikelilingi oleh karakter (mis. "= E1-S1"), Excel mencoba untuk membagi nilai itu menjadi lebih dari satu kolom. Nilai yang terletak tepat di sel itu bisa ditimpa(Perilaku Teks ke kolom diubah di suatu tempat antara Excel 2007 dan 2013 sehingga tidak berfungsi lagi)
Add-In Excel untuk membuka CSV dan mengimpor semua nilai sebagai teks
Ini adalah Plug-in Excel untuk menyederhanakan tindakan Impor CSV.
Keuntungan utama: Ini adalah solusi satu kali klik dan menggunakan
QueryTables
, metode antipeluru yang sama di belakang Dapatkan data eksternalInstalasi
%appdata%\Microsoft\AddIns
File tab → Options → Add-Ins → Go To
dan pilihImportCSV.xla
File tab → Options → Trust Center → Trust Center Settings → Macro Settings → Enable all macros
Anda akan melihat entri bilah menu baru bernama Add-Ins dan Anda menggunakan tombol ini untuk dengan cepat membuka file CSV Anda tanpa harus melalui kerumitan dialog Impor
Skrip PowerShell untuk membuka CSV langsung dari Windows Explorer
Anda dapat menggunakan skrip PowerShell untuk membuka file CSV dan secara otomatis meneruskannya ke Excel. Script diam-diam menggunakan metode impor teks Excel yang memperlakukan nilai selalu sebagai teks dan, sebagai bonus, menangani pengkodean UTF-8
C:\my\folder\myScript.ps1
. (Perhatikan ekstensi.ps1
)shell:sendto
» EnterSekarang Anda dapat memilih (banyak) CSV dan membukanya di Excel via
Right-click » SendTo » Excel
sumber
Anda dapat mencoba dengan membuka .xlsx terlebih dahulu, kemudian membuat koneksi data dan mengimpor .csv. Pilih "koma" dibatasi, lalu pilih opsi untuk memperlakukan semua kolom sebagai teks daripada "Umum".
Sunting: Oh, saya tidak sepenuhnya membaca pertanyaan. Di panduan impor, pilih tajuk kolom pertama yang ingin Anda impor sebagai teks, gulir ke tajuk kolom terakhir, dan Shift + Klik tajuk. Kemudian pilih opsi radial "Teks".
sumber
Saran Wetmelon berfungsi (bahkan dengan .CSV) jika Anda melakukan hal berikut:
Saya tahu ini lebih banyak langkah, tetapi setidaknya ini memungkinkan saya membuka CSV dengan cara ini tanpa harus mengubah ekstensi
sumber
Awas!
Saat menggunakan metode manual "Excel → Data → Dapatkan data eksternal → Pilih semua kolom dan pilih Teks" ......
Ini hanya akan mengatur kolom menjadi teks "yang memiliki data di baris pertama" (biasanya baris tajuk). Wisaya ini tidak menunjukkan kolom lebih jauh ke kanan yang mungkin memiliki data lebih lanjut di bawah ini tetapi tidak di baris pertama. Sebagai contoh:
Row1Col1, Row1Col2, Row1Col3
Row2Col1, Row2Col2, Row2Col3, Row2Col4
Anda tidak akan pernah melihat Kol 4 di panduan impor sehingga Anda tidak akan mendapatkan opsi untuk mengubahnya dari umum ke format teks sebelum mengimpor !!!!
sumber
Berikut adalah prosedur alternatif untuk kode yang diposting di atas oleh Jean-François Corbett
Prosedur ini akan mengimpor file csv ke Excel dengan semua kolom diformat sebagai Teks
sumber
Jika Anda selalu mengimpor data yang sama (format rekaman konstan, tata letak, dll ...) Anda bisa menulis makro Access menggunakan spesifikasi impor dan kemudian membuang data kembali ke Excel. Selesai ini mungkin kali. Cara lain yang telah saya lakukan adalah dengan menggunakan VBA dan membaca data ke dalam lembar kerja satu catatan sekaligus dan menguraikannya saat dibaca. Sejauh yang saya tahu tidak ada cara untuk mengatur format default selama impor di Excel dan bahkan jika Anda bisa itu akan menyebabkan masalah dengan jenis file berikutnya yang Anda coba parsing.
sumber
Sebagai permintaan, kirimkan komentar saya sebagai jawaban (dengan sedikit info tambahan ditambahkan):
Hey Scripting Guy membuat artikel blog tentang Mengimpor CSV ke Excel yang mungkin memiliki beberapa informasi berguna untuk Anda. Bermain dengan objek data di dalam PowerShell memungkinkan Anda untuk melakukan apa yang Anda inginkan.
Meskipun artikel secara khusus hanya menyebutkan mengimpor data ke dalam sel yang dapat meninggalkan format angka, dimungkinkan untuk bermain-main dengan beberapa properti Excel ComObject dan metode untuk memaksa data untuk memasukkan sel sebagai teks mentah sebagai gantinya (atau memaksa pemformatan sel ke dalam teks sebelum atau setelah impor).
sumber
Untuk alasan yang tidak diketahui, bahkan jika Anda secara eksplisit menyediakan format untuk semua kolom, Excel akan mengabaikannya jika ekstensi file CSV.
Beberapa opsi:
Buat kueri untuk mengimpor data, seperti yang disarankan Wetmelon .
Kerugian: Anda mungkin kehilangan driver database CSV pada mesin 64-bit.
Gunakan kode Jean , tetapi sertakan menyalin file ke folder sementara dan mengubah ekstensi salinan.
Kerugian: Tidak ada tautan ke file asli (menyimpan akan menimpa salinan); Anda harus menghapus salinan secara manual setelahnya. Namun, Anda dapat secara manual Simpan Sebagai di CSV asli.
Buka CSV di Notepad, Ctrl+A, Ctrl+C, paste untuk Excel, kemudian data - Teks untuk Kolom, maka itu wizard biasa di mana Anda dapat mengatur semua kolom Teks dalam satu pergi. Ini rasa yang berbeda dari opsi sebelumnya, karena ia juga menyembunyikan ekstensi yang berharga dari Excel.
Kerugian: manual.
Memiliki loop VBA yang sangat sederhana yang membaca seluruh file ke dalam memori dan meletakkannya di atas sel, sel demi sel.
Kerugian: lebih lambat, jelek.
sumber
Jika saya memahami pertanyaan dengan benar, ini mudah diselesaikan dengan menggunakan opsi Transpose di Tempel-Khusus seperti yang dijelaskan di sini .
sumber