Adakah yang tahu kalau ada token yang bisa saya tambahkan ke csv saya untuk bidang tertentu sehingga Excel tidak mencoba mengubahnya menjadi tanggal?
Saya mencoba menulis file .csv dari aplikasi saya dan salah satu nilainya terlihat cukup mirip tanggal ketika Excel secara otomatis mengubahnya dari teks ke tanggal. Saya sudah mencoba meletakkan semua bidang teks saya (termasuk yang terlihat seperti tanggal) dalam tanda kutip ganda, tetapi itu tidak berpengaruh.
Jawaban:
Saya telah menemukan bahwa menempatkan '=' sebelum tanda kutip ganda akan mencapai apa yang Anda inginkan. Ini memaksa data menjadi teks.
misalnya. = "2008-10-03", = "lebih banyak teks"
EDIT (menurut posting lain) : karena bug Excel 2007 yang dicatat oleh Jeffiekins, orang harus menggunakan solusi yang diusulkan oleh Andrew :
"=""2008-10-03"""
sumber
"=""2008-10-03"""
. Memperbarui pos.Saya tahu ini adalah pertanyaan lama, tetapi masalahnya tidak akan hilang segera. File CSV mudah dihasilkan dari sebagian besar bahasa pemrograman, agak kecil, dapat dibaca oleh manusia dalam sebuah krisis dengan editor teks biasa, dan ada di mana-mana.
Masalahnya tidak hanya dengan tanggal dalam bidang teks, tetapi numerik apa pun juga akan dikonversi dari teks ke angka. Beberapa contoh di mana ini bermasalah:
yang terkadang dapat dimulai dengan satu atau lebih nol (0), yang dibuang ketika dikonversi ke numerik. Atau nilai berisi karakter yang dapat dikacaukan dengan operator matematika (seperti pada tanggal: /, -).
Dua kasus yang saya bisa memikirkan bahwa solusi "mengawali =", seperti yang disebutkan sebelumnya, mungkin tidak ideal adalah
Retas saya untuk mengatasi ini
Jika satu pra / menambahkan karakter non-numerik dan / atau non-tanggal dalam nilai, nilai akan dikenali sebagai teks dan tidak dikonversi. Karakter yang tidak dicetak akan baik karena tidak akan mengubah nilai yang ditampilkan. Namun, karakter spasi lama yang biasa (\ s, ASCII 32) tidak berfungsi untuk ini karena akan dipotong oleh Excel dan kemudian nilainya masih akan dikonversi. Tetapi ada berbagai karakter ruang cetak dan non-cetak lainnya yang akan berfungsi dengan baik. Namun yang termudah adalah menambahkan (menambahkan setelah) karakter tab sederhana (\ t, ASCII 9).
Manfaat dari pendekatan ini:
Jika ada alasan Anda tidak ingin menggunakan tab, cari di tabel Unicode untuk hal lain yang cocok.
Pilihan lain
mungkin untuk menghasilkan file XML, yang format tertentu juga diterima untuk diimpor oleh versi MS Excel yang lebih baru, dan yang memungkinkan lebih banyak opsi mirip dengan format .XLS, tapi saya tidak punya pengalaman dengan ini.
Jadi ada berbagai opsi. Tergantung pada persyaratan / aplikasi Anda, satu mungkin lebih baik daripada yang lain.
Tambahan
Perlu dikatakan bahwa versi yang lebih baru (2013+) dari MS Excel tidak lagi membuka CSV dalam format spreadsheet - satu lagi speedbump dalam alur kerja seseorang membuat Excel kurang bermanfaat ... Setidaknya, ada instruksi untuk menyiasatinya. Lihat misalnya Stackoverflow ini: Bagaimana cara menampilkan file .csv dengan benar dalam Excel 2013? .
sumber
\t
karakter pemisahan saya;
... sialan, MS Office, mengapa ini perlu waktu lebih dari 2 menit untuk saya ketahui?column_name
). Juga berhasil. Terima kasih!'
, karena agak dipahami dengan baik dan tidak terlalu mengganggu ... tetapi yang tidak terlihat akan lebih baik.Mengatasi solusi Jarod dan masalah yang diangkat oleh Jeffiekins, Anda dapat memodifikasi
untuk
sumber
"
nilai di mana saja di antara tanggal."806676","None","41","=""05-16-2011""","100.00","False"
sebagai gantinya dan Anda akan melihat save dan reload kehilangan teks yang ditulis dgn tanda penghubung.Saya memiliki masalah yang sama dan ini adalah solusi yang membantu saya tanpa harus mengedit konten file csv:
Jika Anda memiliki fleksibilitas untuk memberi nama file selain ".csv", Anda dapat menamainya dengan ekstensi ".txt", seperti "Myfile.txt" atau "Myfile.csv.txt". Kemudian ketika Anda membukanya di Excel (bukan dengan drag and drop, tetapi menggunakan File-> Open atau daftar file yang Terakhir Digunakan), Excel akan memberi Anda "Text Import Wizard".
Di halaman pertama panduan, pilih "Dibatasi" untuk jenis file.
Di halaman kedua panduan pilih "," sebagai pembatas dan juga pilih kualifikasi teks jika Anda telah melingkupi nilai-nilai Anda dengan tanda kutip
Di halaman ketiga, pilih setiap kolom satu per satu dan tentukan masing-masing jenis "Teks" alih-alih "Umum" untuk menghentikan Excel dari mengacaukan data Anda.
Semoga ini bisa membantu Anda atau seseorang dengan masalah serupa!
sumber
PERINGATAN: Excel '07 (setidaknya) memiliki bug (nother): jika ada koma di isi bidang, itu tidak menguraikan = "bidang, isi" dengan benar, tetapi menempatkan semuanya setelah koma ke dalam bidang berikut, terlepas dari tanda kutip.
Satu-satunya solusi yang saya temukan yang berfungsi adalah untuk menghilangkan = ketika konten bidang menyertakan koma.
Ini mungkin berarti bahwa ada beberapa bidang yang tidak mungkin untuk mewakili tepat "benar" di Excel, tetapi sekarang saya percaya tidak ada yang terlalu terkejut.
sumber
field, content
ada"
di dalamnya. Misalnya"=""field, co""ntent"""
""""
.1"2
, jika Anda memilih untuk menggunakan trik ini (bukan hanya membiarkannya seperti"1""2"
dalam file - excel akan diperlakukan sebagai teks), maka string yang benar dalam file CSV penargetan Excel berakhir sedang"=""1""""2"""
.Saat membuat string untuk ditulis ke file CSV saya di C # saya harus memformatnya dengan cara ini:
sumber
2018
Satu-satunya solusi yang tepat yang bekerja untuk saya (dan juga tanpa memodifikasi CSV ).
Excel 2010:
Excel office365: (versi klien)
Catatan: Excel office365 (versi web), saat saya menulis ini, Anda tidak akan dapat melakukannya.
sumber
Di Excel 2010 buka lembar baru. Pada pita Data klik "Dapatkan Data Eksternal Dari Teks". Pilih file CSV Anda lalu klik "Buka". Klik "Selanjutnya". Hapus centang "Tab", tempatkan tanda centang di sebelah "Koma", lalu klik "Berikutnya". Klik di mana saja di kolom pertama. Sambil menahan tombol shift, seret slider ke seberang hingga Anda dapat mengklik di kolom terakhir, lalu lepaskan tombol shift. Klik tombol radio "teks" lalu klik "Selesai"
Semua kolom akan diimpor sebagai teks, sama seperti yang ada di file CSV.
sumber
Masih merupakan masalah dalam rilis Microsoft Office 2016, agak mengganggu bagi kita yang bekerja dengan nama gen seperti MARC1, MARCH1, SEPT1 dll. Solusi yang saya temukan adalah yang paling praktis setelah membuat file ".csv" di R, yang kemudian akan dibuka / dibagikan dengan pengguna Excel:
HTH
sumber
Berikut adalah metode sederhana yang kami gunakan di tempat kerja di sini saat membuat file csv di tempat pertama, itu memang mengubah nilai sedikit sehingga tidak cocok di semua aplikasi:
Tambahkan ruang untuk semua nilai dalam csv
Ruang ini akan dikupas oleh excel dari angka-angka seperti "1", "2.3" dan "-2.9e4" tetapi akan tetap pada tanggal seperti "01/10/1993" dan boolean seperti "BENAR", menghentikannya diubah menjadi tipe data internal excel.
Ini juga menghentikan tanda kutip ganda yang sedang dibaca saat dibaca, sehingga cara yang sangat mudah untuk membuat teks dalam csv tetap tidak berubah oleh excel BAHKAN JIKA beberapa teks seperti "3.1415" adalah mengelilinginya dengan tanda kutip ganda DAN menambahkan seluruh string dengan spasi, yaitu (menggunakan tanda kutip tunggal untuk menunjukkan apa yang akan Anda ketik) '"3,1415"'. Kemudian di excel Anda selalu memiliki string asli, kecuali dikelilingi oleh tanda kutip ganda dan diawali dengan spasi sehingga Anda perlu memperhitungkannya dalam rumus apa pun, dll.
sumber
"\xA0"
sebagai gantinya - itu akan berhasil.(Mengasumsikan Excel 2003 ...)
Saat menggunakan Wisaya Teks-ke-Kolom, pada Langkah 3 Anda dapat menentukan tipe data untuk setiap kolom. Klik pada kolom dalam pratinjau dan ubah kolom yang tidak pantas dari "Umum" menjadi "Teks."
sumber
Ini adalah satu-satunya cara saya tahu cara melakukannya tanpa mengacaukan file itu sendiri. Seperti biasa dengan Excel, saya belajar ini dengan memukul kepala saya selama berjam-jam.
Ubah ekstensi file .csv ke .txt; ini akan menghentikan Excel dari mengonversi file secara otomatis ketika dibuka. Inilah cara saya melakukannya: buka Excel ke lembar kerja kosong, tutup lembar kosong, lalu File => Buka dan pilih file Anda dengan ekstensi .txt. Ini memaksa Excel untuk membuka "Text Import Wizard" di mana ia akan bertanya kepada Anda tentang bagaimana Anda ingin menafsirkan file. Pertama Anda memilih pembatas Anda (koma, tab, dll ...), lalu (inilah bagian penting) Anda memilih satu set kolom kolom dan pilih format. Jika Anda menginginkan apa yang ada di dalam file maka pilih "Teks" dan Excel akan menampilkan apa yang ada di antara pembatas.
sumber
awk
- hindari memformat ulang nilai seperti tanggal , di mana masalahnya ada pada Excel dan bukan daripadaawk
, meskipun judul pertanyaan.(EXCEL 2007 dan yang lebih baru)
Cara memaksa excel untuk tidak "mendeteksi" format tanggal tanpa mengedit file sumber
Antara:
Data > Get external data > From Text
dan pilih CSV Anda.
Either way, Anda akan disajikan dengan opsi impor, cukup pilih setiap kolom yang berisi tanggal dan beri tahu excel untuk memformat sebagai "teks" bukan "umum".
sumber
Apa yang saya lakukan untuk masalah yang sama ini adalah menambahkan berikut sebelum setiap nilai csv: "=" "" dan satu kutipan ganda setelah setiap nilai CSV, sebelum membuka file di Excel. Ambil nilai-nilai berikut sebagai contoh:
Ini harus diubah sebelum dibuka di Excel ke:
Setelah Anda melakukan ini, setiap nilai sel muncul sebagai rumus di Excel dan karenanya tidak akan diformat sebagai angka, tanggal, dll. Misalnya, nilai 012345 muncul sebagai:
sumber
1234500198475E-8
; dengan cara ini perhitungan lebih lanjut dalam excel masih dimungkinkan.Tidak ada solusi yang ditawarkan di sini adalah solusi yang baik. Ini mungkin bekerja untuk masing-masing kasus, tetapi hanya jika Anda mengendalikan tampilan akhir. Ambil contoh saya: karya saya menghasilkan daftar produk yang mereka jual ke ritel. Ini dalam format CSV dan berisi kode bagian, beberapa di antaranya dimulai dengan nol, ditetapkan oleh pabrikan (tidak di bawah kendali kami). Singkirkan nol terkemuka dan Anda mungkin benar-benar cocok dengan produk lain. Pelanggan ritel menginginkan daftar dalam format CSV karena program pemrosesan back-end, yang juga di luar kendali kami dan berbeda per pelanggan, sehingga kami tidak dapat mengubah format file CSV. Tidak ada awalan '=', atau tab yang ditambahkan. Data dalam file CSV mentah benar; saat pelanggan membuka file-file itu di Excel masalah mulai. Dan banyak pelanggan tidak benar-benar mengerti komputer. Mereka bisa saja membuka dan menyimpan lampiran email. Kami berpikir untuk menyediakan data dalam dua format yang sedikit berbeda: satu sebagai Excel Friendly (menggunakan opsi yang disarankan di atas dengan menambahkan TAB, yang lain sebagai 'master'. Tetapi ini mungkin angan-angan karena beberapa pelanggan tidak akan mengerti mengapa kita perlu melakukan ini. Sementara itu kami terus menjelaskan mengapa mereka terkadang melihat data yang 'salah' dalam spreadsheet mereka. Sampai Microsoft membuat perubahan yang tepat, saya tidak melihat resolusi yang tepat untuk ini, selama orang tidak memiliki kendali atas bagaimana pengguna akhir gunakan file. Tapi ini mungkin angan-angan karena beberapa pelanggan tidak akan mengerti mengapa kita perlu melakukan ini. Sementara itu kami terus menjelaskan mengapa mereka terkadang melihat data yang 'salah' di spreadsheet mereka. Sampai Microsoft membuat perubahan yang tepat, saya tidak melihat resolusi yang tepat untuk ini, selama orang tidak memiliki kendali atas bagaimana pengguna akhir menggunakan file. Tapi ini mungkin angan-angan karena beberapa pelanggan tidak akan mengerti mengapa kita perlu melakukan ini. Sementara itu kami terus menjelaskan mengapa mereka terkadang melihat data yang 'salah' di spreadsheet mereka. Sampai Microsoft membuat perubahan yang tepat, saya tidak melihat resolusi yang tepat untuk ini, selama orang tidak memiliki kendali atas bagaimana pengguna akhir menggunakan file.
sumber
"\xA0"
(ruang bebas-pecah) ke data Anda.Saya baru saja bertemu dengan konvensi ini, yang tampaknya merupakan pendekatan yang sangat baik, tetapi saya tidak dapat menemukannya di mana pun. Adakah yang akrab dengannya? Bisakah Anda mengutip sumbernya? Saya belum mencari berjam-jam tetapi saya berharap seseorang akan mengenali pendekatan ini.
Contoh 1: = ("012345678905") ditampilkan sebagai 012345678905
Contoh 2: = ("1954-12-12") ditampilkan sebagai 1954-12-12 , bukan 12/12/1954 .
sumber
Ini bukan Excel. Windows mengenali rumus, data sebagai tanggal dan koreksi otomatis. Anda harus mengubah pengaturan Windows.
"Panel Kontrol" (-> "Beralih ke Tampilan Klasik") -> "Opsi Regional dan Bahasa" -> tab "Opsi Regional" -> "Sesuaikan ..." -> tab "Angka" -> Lalu ubah simbol sesuai dengan yang kamu inginkan.
http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html
Ini akan berfungsi di komputer Anda, jika pengaturan ini tidak diubah misalnya di komputer pelanggan Anda, mereka akan melihat tanggal alih-alih data.
sumber
Hai saya punya masalah yang sama,
Saya menulis vbscipt ini untuk membuat file CSV lain. File CSV baru akan memiliki spasi di font masing-masing bidang, jadi excel akan memahaminya sebagai teks.
Jadi, Anda membuat file .vbs dengan kode di bawah ini (misalnya Modify_CSV.vbs), simpan dan tutup. Seret dan Jatuhkan file asli Anda ke file vbscript Anda. Ini akan membuat file baru dengan "SPACE_ADDED" untuk nama file di lokasi yang sama.
sumber
Tanpa memodifikasi file csv Anda, Anda dapat:
excel akan memformat dan memisahkan sel csv Anda dengan benar sebagai teks yang diformat dengan mengabaikan format tanggal otomatis.
Agak konyol bekerja, tetapi mengalahkan memodifikasi data csv sebelum mengimpor. Andy Baird dan Richard agak menghindari metode ini, tetapi melewatkan beberapa langkah penting.
sumber
Saya tahu ini adalah utas lama. Untuk yang seperti saya, yang masih memiliki masalah ini menggunakan office 2013 via powershell com objek dapat menggunakan metode opentext . Masalahnya adalah bahwa metode ini memiliki banyak argumen, yang terkadang saling eksklusif. Untuk mengatasi masalah ini, Anda dapat menggunakan metodeparameter bernama invoke yang diperkenalkan dalam posting ini . Contohnya adalah
Sayangnya saya baru menemukan bahwa metode ini entah bagaimana memecah csv parsing ketika sel mengandung linebreak. Ini didukung oleh csv tetapi implementasi microsoft tampaknya disadap. Juga entah bagaimana tidak mendeteksi karakter spesifik Jerman. Memberinya budaya yang benar tidak mengubah perilaku ini. Semua file (csv dan skrip) disimpan dengan pengkodean utf8. Pertama saya menulis kode berikut untuk memasukkan sel csv dengan sel.
Tapi ini sangat lambat, itulah sebabnya saya mencari alternatif. Tampaknya Excel memungkinkan Anda untuk mengatur nilai rentang sel dengan matriks. Jadi saya menggunakan algoritma di blog ini untuk mengubah csv di multiarray.
Anda dapat menggunakan kode di atas sebagaimana mestinya mengkonversi csvs menjadi excel. Ubah saja path ke csv dan karakter pembatas di bagian bawah.
sumber
Dalam kasus saya, "Sept8" dalam file csv yang dihasilkan menggunakan R diubah menjadi "8-September" oleh Excel 2013. Masalahnya diselesaikan dengan menggunakan fungsi write.xlsx2 () dalam paket xlsx untuk menghasilkan file output dalam format xlsx , yang dapat dimuat oleh Excel tanpa konversi yang tidak diinginkan. Jadi, jika Anda diberi file csv, Anda dapat mencoba memuatnya ke R dan mengubahnya menjadi xlsx menggunakan fungsi write.xlsx2 ().
sumber
Solusi menggunakan Google Drive (atau Angka jika Anda menggunakan Mac):
Atau jika Anda menggunakan Mac untuk langkah 3, Anda dapat membuka data dalam Angka.
sumber
(EXCEL 2016 dan yang lebih baru, sebenarnya saya belum mencoba dalam versi yang lebih lama)
sumber
Oke menemukan cara sederhana untuk melakukan ini di Excel 2003 hingga 2007. Buka buku kerja xls kosong. Lalu pergi ke menu Data, impor data eksternal. Pilih file csv Anda. Pergi melalui wizard dan kemudian dalam "format data kolom" pilih kolom apa saja yang perlu dipaksa untuk "teks". Ini akan mengimpor seluruh kolom itu sebagai format teks yang mencegah Excel dari mencoba memperlakukan sel tertentu sebagai tanggal.
sumber
Masalah ini masih ada di Mac Office 2011 dan Office 2013, saya tidak bisa mencegahnya terjadi. Sepertinya hal yang mendasar.
Dalam kasus saya, saya memiliki nilai seperti "1 - 2" & "7 - 12" dalam CSV yang terlampir dengan benar dalam koma terbalik, ini secara otomatis dikonversi ke tanggal dalam excel, jika Anda kemudian mencoba mengubahnya menjadi teks biasa yang akan Anda dapatkan representasi nomor dari tanggal seperti 43768. Selain itu memformat ulang sejumlah besar yang ditemukan dalam barcode dan nomor EAN ke nomor 123E + lagi yang tidak dapat dikonversi kembali.
Saya menemukan bahwa Google Drive Google Sheets tidak mengubah angka menjadi tanggal. Barcode memiliki koma di dalamnya setiap 3 karakter tetapi ini mudah dihapus. Ini menangani CSV dengan sangat baik terutama ketika berhadapan dengan MAC / Windows CSV.
Mungkin saja menyelamatkan seseorang.
sumber
SOLUSI TERMUDAH Saya baru tahu ini hari ini.
Setelah selesai mengedit, Anda selalu dapat membukanya kembali di Word lagi untuk mengganti en dashes dengan tanda hubung lagi.
sumber
Saya melakukan ini untuk nomor kartu kredit yang terus dikonversi ke notasi ilmiah: Saya akhirnya mengimpor .csv saya ke Google Sheets. Opsi impor sekarang memungkinkan untuk menonaktifkan pemformatan otomatis nilai numerik. Saya mengatur kolom sensitif apa saja ke Teks Biasa dan mengunduh sebagai xlsx.
Ini adalah alur kerja yang mengerikan, tetapi setidaknya nilai-nilai saya dibiarkan seperti seharusnya.
sumber
Saya membuat vba makro ini yang pada dasarnya memformat rentang output sebagai teks sebelum menempelkan angka. Bekerja sempurna untuk saya ketika saya ingin menempelkan nilai-nilai seperti 8/11, 23/6, 1/3 dll tanpa Excel menafsirkannya sebagai tanggal.
Saya sangat tertarik mengetahui apakah ini bekerja untuk orang lain juga. Saya telah mencari solusi untuk masalah ini untuk sementara waktu, tetapi saya belum melihat solusi vba cepat untuk itu sebelumnya yang tidak termasuk memasukkan 'di depan teks input. Kode ini menyimpan data dalam bentuk aslinya.
sumber
Jika Anda meletakkan koma terbalik di awal bidang, itu akan ditafsirkan sebagai teks.
Contoh:
25/12/2008
menjadi'25/12/2008
Anda juga dapat memilih jenis bidang saat mengimpor.
sumber
Metode alternatif:
Ubah format kolom yang ingin Anda ubah menjadi 'Teks'. Pilih semua sel yang ingin Anda pertahankan, salin. Tanpa membatalkan pilihan kolom-kolom itu, klik "Edit> Rekat Khusus> Sebagai nilai"
Simpan sebagai CSV. Perhatikan bahwa ini harus menjadi hal terakhir yang Anda lakukan pada file karena ketika Anda membukanya kembali, itu akan memformat dirinya sendiri sebagai tanggal karena format sel tidak dapat disimpan dalam file CSV.
sumber