Membuka file CSV di kolom angka telepon rusak Excel

3

Saya mengekspor data listview ke file csv. Ada kolom, 'Kontak Tidak'. Tipe data kolom ini adalah 20 ukuran bidang teks dalam akses MS. Membuka csv ini dengan Notepad, ini menunjukkan nilai data aktual, 12345678901234567890. Tetapi membukanya dengan MS Excel, ini menunjukkan 12345678901234500000.: O

Mengapa 5 karakter terakhir diubah menjadi nol? Di Excel, saya memformat ulang kolom ini ke format kategori 'Kustom' atau 'Nomor'. Setelah ini, ini menunjukkan 12345678901234500000. Jika tidak memformat ulang, biasanya itu menunjukkan 1.23457E + 19.

soclose
sumber
Saya sudah membaca ini - stackoverflow.com/questions/137359/excel-csv-number-cell-format . Saya masih menemukan solusinya tanpa melakukan langkah tambahan kepada pengguna.
Pertanyaan ini tidak sedikit terkait dengan pemrograman. Harus dipindahkan ke Superuser.
1
Hanya untuk mengklarifikasi. Apakah masalah yang Anda miliki dengan Access atau Excel? Apakah ada masalah dalam melihat data di sisi Access? Apakah Anda mengimpor ke Access dari Excel atau file tersebut ditautkan? Tampaknya semua orang menyarankan untuk membuat konten menjadi string tetapi Anda memiliki masalah dengan itu di Access, tetapi Access akan mengizinkan string, jadi apa masalahnya?
datatoo
Saat ini, masalah ini adalah tentang membuka file csv di excel. Saya hanya membayangkan tentang mengimpor ke akses di masa depan.
soclose
Dear All, saya mengikuti cara ini = "..." Excel CSV - format sel angka . Karena saat ini saya hanya fokus bahwa pengguna dapat melihat semua nilai di excel, tidak mempertimbangkan mengimpor ke akses ms. Terima kasih semua.
soclose

Jawaban:

4

Satu saran adalah meletakkan tanda kutip di depan angka ketika Anda mengekspor data ke format CSV. Jadi, bukannya 12345678901234567890ekspor '12345678901234567890.

jwr
sumber
2
Menggunakan satu kutipan di depan, itu berfungsi. Tetapi mengimpor csv ini ke akses ms, sistem perlu menghapusnya :(
3

Excel memperlakukan data sebagai angka titik mengambang, yang dapat diperkirakan sebagai 1,23457E + 19.

Floating point tidak memberikan presisi 20 digit.

Ini adalah batasan Floating Point. Lihat halaman ini

pavium
sumber
1
Data saya hanya angka saja, tidak termasuk titik desimal. Apakah Excel memperlakukannya sebagai mengambang?
2
Yah, itu angka tetapi ada terlalu banyak digit untuk Excel untuk menganggapnya bilangan bulat sederhana, jadi itu diperlakukan sebagai floating point. baik .. itu mungkin penjelasan yang disederhanakan , tetapi support.microsoft.com/kb/158071 mengatakan 15 digit adalah presisi maksimum di Excel, jadi Anda tidak akan pernah mendapatkan 20 digit. Itu sebabnya orang menyarankan untuk membuatnya menjadi string.
pavium
Hai pavium, apakah 15 digit untuk nomor telepon cukup untuk penggunaan di seluruh dunia? Jika demikian, saya akan menyarankan pengguna saya untuk hanya menerima 15 digit ini? Terima kasih.
soclose
1
Mungkin cukup - saya bukan pakar standar telepon internasional. Tetapi menggunakan nomor daripada string mungkin menjadi masalah seperti yang ditunjukkan oleh @SpliFF, karena angka dengan angka nol terkemuka (digunakan di mana saya berada, untuk panggilan internasional dan telepon seluler) akan kehilangan angka nol terkemuka itu. Saya pikir lebih baik menggunakan string untuk mewakili nomor telepon.
pavium
3

Pertama, Anda tidak ingin menganggap ini sebagai angka karena 0123 akan menjadi 123 yang merupakan nomor telepon yang sama sekali berbeda. Membungkus nilai dalam tanda kutip ganda ketika Anda mengekspor harus cukup untuk membuat Excel memperlakukan kolom sebagai teks.

Saya perhatikan di masa lalu bahwa Excel menyediakan sangat sedikit kendali atas proses impor CSV jadi tergantung pada kebutuhan Anda, Anda dapat mempertimbangkan menggunakan VBA untuk kontrol lebih besar atas impor, atau pasca-pemrosesan CSV, atau menggunakan Open Office.

SPIFF
sumber
Menempatkan mereka dalam tanda kutip ganda, itu berhasil. Tetapi mengimpor csv ini ke akses ms, sistem perlu menghapus tanda kutip ini :(
1
Apakah Anda mencari solusi untuk mengimpor ke Access, atau Excel - atau keduanya? Jika Anda hanya ingin mengimpor ke Access, apakah Anda mengalami masalah dengan csv asli, yaitu tanpa membuka di Excel?
Diem
@soclose bahkan dalam Access nomor telepon harus diperlakukan sebagai string / varchar
mbx
2

Jika Anda membuka file CSV dari jendela explorer (dengan mengklik dua kali pada file), Excel akan berusaha untuk secara otomatis menentukan bidang untuk Anda.

Jika Anda membuka Excel, maka buka file CSV Anda memiliki opsi untuk memilih pembatas dan jenis bidang sendiri. Ini akan memungkinkan Anda untuk mengatur Anda 'Kontak Tidak' sebagai teks, dan itu akan mengimpor dengan benar.

Craig
sumber
Saya membuka csv ini dengan MS Excel 2003. Tidak ada wizard yang muncul untuk memilih pembatas. Pengguna ingin membuka tanpa melakukan ini. bagaimana cara memperbaiki?
1

Jawabannya, seperti yang telah disarankan di sini, adalah bahwa nilainya harus berupa string.

Ini hanya upaya untuk membantu Anda memahami alasannya. Ini berarti itu akan diperlakukan sebagai string di Access juga, yang sekarang Anda khawatirkan. Cara terbaik untuk melihat perbedaan dan mungkin memahami apa yang dikatakan adalah memformat beberapa sel yang berbeda dalam lembar excel.

Forma satu sebagai format umum, satu sebagai angka, dan satu sebagai teks. (Format> Sel> Kategori Angka) Kemudian ketikkan nomor 20 karakter seperti 99999999999999999999. Simpan file sebagai format csv dan buka notepad untuk melihat perbedaannya. Sebelum entri dengan 'hanya memberitahu excel format sel dengan cara lain.

Anda menyebutkan mengekspor data tampilan daftar ke csv, jadi Anda harus mengontrol data tampilan daftar yang ingin Anda simpan sebagai teks, bukan numerik. Akses tidak akan pernah memiliki masalah dengan ini, kecuali jika Anda mencoba menggunakan nilai sebagai angka, tetapi mereka tampaknya digunakan sebagai angka pengidentifikasi, bukan nilai.

Apa sumber data listview? Menangani format sel sebelum data masuk ke lembar Anda harus menyelesaikan masalah Anda.

datatoo
sumber
1

Dari eksperimen saya, Excel akan mendeteksi secara otomatis format bidang CSV kecuali jika Anda menentukannya

="Data Here"

20,       5.5%,      "0404 123 351", "3-6",  ="123"
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

Saya tidak yakin tentang bagaimana MS Access akan menginterpretasikan bidang-bidang di atas.

Simon Timur
sumber
Kolom terakhir itu seharusnya "=""123"""tidak terbentuk dengan buruk. Dan Access 2003 akan membaca bidang pertama sebagai angka dan sisanya sebagai teks, kecuali jika Anda memberi tahu sebaliknya. Gagal pada yang terakhir dengan kesalahan parsing, tetapi jika bidang dikoreksi seperti yang disarankan maka Access akan membacanya sebagai string ="123"- itu tidak membuat upaya untuk menafsirkan rumus.
DMA57361
1

Cukup gunakan "=0123"dalam file CSV, termasuk kutipan. Hati-hati dengan menyimpan kembali file ini karena CSV lain akan membatalkan =" ... "bagian tersebut.

Ada juga cara HTML jika Anda ingin menggunakan tabel sederhana sebagai spreadsheet Anda yang mungkin akan mempertahankan statusnya saat disimpan kembali, hanya saja itu bukan lagi CSV:

<TD style="mso-number-format:@;">0123</TD>

Jangan gunakan trik kutipan tunggal (') untuk menyelesaikan masalah impor karena hanya berlaku saat mengedit bidang saat Anda sudah di Excel. Dinyatakan secara berbeda, jika Anda mencoba mengimpor file CSV dengan bidang '0123, Anda akan berakhir dengan kutipan tunggal aktual di bidang string Anda juga.

Bunker Q. Erstenthal
sumber