Excel to CSV dengan pengkodean UTF8 [ditutup]


607

Saya memiliki file Excel yang memiliki beberapa karakter Spanyol (tildes, dll.) Yang harus saya konversi ke file CSV untuk digunakan sebagai file impor. Namun, ketika saya melakukan Save As CSV itu mangible karakter Spanyol "khusus" yang bukan karakter ASCII. Tampaknya juga melakukan ini dengan tanda kutip kiri dan kanan dan tanda hubung panjang yang tampaknya berasal dari pengguna asli yang membuat file Excel di Mac.

Karena CSV hanyalah file teks, saya yakin ini bisa menangani pengkodean UTF8, jadi saya menduga itu adalah batasan Excel, tapi saya sedang mencari cara untuk beralih dari Excel ke CSV dan mempertahankan karakter non-ASCII utuh.


15
Saya melihat pertanyaan itu sebelum saya diposting tetapi ini adalah tentang sudah memiliki CSF UTF8 dan membukanya di Excel bukan sebaliknya.
Jeff Treuting

7
Jawaban di bawah ini tampaknya berhasil, tetapi itu hanya solusi. Adakah yang tahu cara membuat Excel melakukan ini?
NielW

2
Saya ingin menjatuhkan 2 sen: Setelah banyak mencoba-coba, mencoba menggunakan fungsi VBA, dll ... (Saya menggunakan Excel 97 karena berbagai alasan) ... cukup Menyimpan-Ke "CSV (MSDOS) "Format menyelesaikan masalah ini untuk saya. Dalam kasus saya, data CSV Citrix webinar (GotoWebinar) berakhir dengan karakter untuk memecah beberapa kode Apex di akhir kami - hemat untuk "CSV (MSDOS)" membuat saya (sebelumnya) memuat ekspor CSV ke Notepad ++ dan menempelkannya ke dalam UTF- 8 file kosong dan resaving. :-P :-)
AMM

2
Ini adalah batasan Excel yang sangat menjengkelkan. Saya membuka permintaan fitur uservoice tentang ini: excel.uservoice.com/forums/… , jangan ragu untuk memilih dan mewujudkannya
Doron Yaacoby

7
menurut uservoice Excel, Microsoft mulai mengerjakan UTF-8 untuk .csv bulan lalu excel.uservoice.com/forums/…
moloko

Jawaban:


405

Solusi sederhana adalah dengan menggunakan Google Spreadsheet. Rekatkan (hanya nilai jika Anda memiliki rumus rumit) atau impor lembar lalu unduh CSV. Saya baru saja mencoba beberapa karakter dan itu bekerja dengan baik.

CATATAN: Google Sheets memang memiliki batasan saat mengimpor. Lihat di sini .

CATATAN: Hati-hati dengan data sensitif dengan Google Sheets.

EDIT: Alternatif lain - pada dasarnya mereka menggunakan VB macro atau addins untuk memaksa save sebagai UTF8. Saya belum mencoba salah satu solusi ini tetapi kedengarannya masuk akal.


63
Mungkin Joel Slotsky (mantan PM Excel) dapat mengirimi mereka posnya yang sudah berumur sepuluh tahun tentang The Absolute Minimum Setiap Pengembang Perangkat Lunak Sepenuhnya, Pasti Harus Tahu Tentang Unicode dan Karakter Set ?
Indolering

8
Dengan Notepad Windows normal (menggunakan save as, dan kemudian memilih utf-8 pada opsi encoding) bekerja untuk saya. Bagi saya itu pendekatan terbaik bagi saya karena itu harus dilakukan oleh pengguna yang tidak memiliki hak admin di mesin mereka, jadi menginstal perangkat lunak tambahan tidak diperlukan.
Fer

9
OpenOffice JustWorks (tm) tanpa kerumitan - Saya pikir itu harus dimasukkan
Rbjz

9
Uhhh. Aku hanya menggigil di punggungku. Bagaimana jika file excel Anda memiliki 200.000 baris? Atau berisi data sensitif yang tidak ingin Anda sertakan dalam excel spreadsheat? Gunakan Openoffice / Libreoffice jika perlu.
Seb

2
Bagaimana jika ukuran file besar? Lembar Goolge memiliki batas ukuran sekitar 75 juta jika saya ingat dengan benar. Saya memiliki file 700M
News_is_Selection_Bias

133

Saya telah menemukan aplikasi spreadsheet OpenOffice , Calc, sangat bagus dalam menangani data CSV.

Dalam dialog "Simpan Sebagai ...", klik "Opsi Format" untuk mendapatkan penyandian berbeda untuk CSV. LibreOffice bekerja dengan cara yang sama AFAIK.

dialog simpan kalk


Saya yakin ini berfungsi, saya hanya belum memiliki OpenOffice sehingga Google Documents lebih mudah dalam situasi saya. tapi terima kasih atas sarannya
Jeff Treuting

19
OpenOffice Calc memiliki opsi yang lebih banyak dan lebih baik saat membuka dan menyimpan file "CSV" (pemisah bidang, penyandian, dll.) Daripada Google Documents dan Excel. Selain itu, Google Documents saat ini menderita batas 400.000 sel per spreadsheet, yang tidak dimiliki OpenOffice Calc.
Christian Davén

3
Saya dapat mengkonfirmasi LibreOffice juga berfungsi: ia menawarkan opsi pengkodean karakter pada ekspor yang sayangnya kurang di Excel.
Rupert Rawnsley

1
Ini adalah pilihan bagus untuk mereka yang bekerja dengan data sensitif. OpenOffice suite dapat menjadi instalasi portabel untuk mereka yang memiliki mesin terkunci.
Nathan

119
  1. Simpan lembar Excel sebagai "Teks Unicode (.txt)". Berita baiknya adalah semua karakter internasional ada di UTF16 (perhatikan, bukan UTF8). Namun, file "* .txt" yang baru dibatasi TAB, tidak dibatasi koma, dan karenanya bukan CSV yang sebenarnya.

  2. (opsional) Kecuali jika Anda dapat menggunakan file dibatasi TAB untuk impor, gunakan editor teks favorit Anda dan ganti karakter TAB dengan koma ",".

  3. Impor file * .txt Anda di aplikasi target. Pastikan itu dapat menerima format UTF16.

Jika UTF-16 telah diimplementasikan dengan benar dengan dukungan untuk poin kode non-BMP, Anda dapat mengonversi file UTF-16 ke UTF-8 tanpa kehilangan informasi. Saya serahkan kepada Anda untuk menemukan metode favorit Anda untuk melakukannya.

Saya menggunakan prosedur ini untuk mengimpor data dari Excel ke Moodle.


5
Akhirnya sesuatu berhasil! Mencoba opsi Excel di atas pada Excel 2013 tanpa hasil. Saya baru saja beralih menggunakan \ t sebagai karakter split ketika saya menguraikannya dan itu bekerja dengan sempurna!
Mattias Lindberg

1
Diperlukan untuk mengekspor XLS sebagai CSV untuk diimpor di MySQL. Menggunakan Excel 2003 saya diekspor dalam format "Unicode Text (.txt)", kemudian menggunakan Notepad ++ untuk menggantikan TAB ;, lalu mengimpor file txt ke phpmyadmin dengan "set karakter file: utf-8", Format "CSV menggunakan LOAD DATA ". Semua penyandian telah ditransfer dengan benar.
Kai Noack

3
Terima kasih. Ini masuk akal. Mengapa MS masih menolak untuk menggunakan UTF sebagai standar mengalahkan saya.
Oskar Limka

4
@OskarLimka: Ketika Anda mengatakan "UTF", maksud Anda UTF-8 atau UTF-16? Karena Microsoft memang menggunakan sedikit UTF-16.
Flimm

7
"Kabar baiknya adalah bahwa semua karakter internasional berada di UTF16 (catatan, bukan di UTF8)." : omong kosong . UTF-8 dan UTF-16 adalah dua cara untuk menyandikan seluruh set poin kode Unicode.

43

Saya tahu ini adalah pertanyaan lama tetapi saya kebetulan menemukan pertanyaan ini sambil berjuang dengan masalah yang sama seperti OP.

Karena tidak menemukan solusi yang ditawarkan sebagai opsi yang layak, saya mencari tahu apakah ada cara untuk melakukan ini hanya dengan menggunakan Excel.

Untungnya, saya telah menemukan bahwa masalah karakter yang hilang hanya terjadi (dalam kasus saya) ketika menyimpan dari format xlsx ke format csv. Saya mencoba menyimpan file xlsx ke xls terlebih dahulu, kemudian ke csv. Ini benar-benar berhasil.

Silakan coba dan lihat apakah itu cocok untuk Anda. Semoga berhasil.


3
Bagi saya, di Excel untuk Mac 2011, ini berfungsi tetapi hanya jika saya memilih Windows comma separated (CSV). Tidak berfungsi jika saya menggunakan opsi default atau DOS CSV - keduanya menggantikan karakter beraksen dengan karakter sampah acak. Diuji untuk karakter termasuk é, è, â... Tidak tahu apakah itu UTF8 nyata tetapi karakter tidak hancur.
user56reinstatemonica8

12
Konfirmasi cepat - file yang dihasilkan dengan metode ini aktif (Excel untuk Mac 2011) tidak menghasilkan UTF-8 csvs, TETAPI , mereka menghasilkan CSV yang setidaknya mengandung karakter yang benar dan karenanya dapat dengan mudah diubah menjadi UTF8 dalam editor teks , yang merupakan langkah besar ke depan dari sampah kumuh yang Excel lontarkan secara default.
user56reinstatemonica8

Ya, setuju, ini juga bekerja untuk saya (Excel Mac 2011) dan itu benar-benar layak mendapatkan lebih banyak upvotes.
cbmanica

1
Ini tidak berhasil bagi saya (menggunakan Excel 2007). Saya memiliki 2 karakter non-ASCII di file saya dan salah satunya diselamatkan OK dengan cara ini, yang lain tidak.
EM0

1
Perhatikan bahwa file CSV yang dihasilkan akan berada di UTF-16, bukan UTF-8 sebagai pertanyaan yang diajukan.
Flimm

38

Anda dapat menggunakan perintah iconv di bawah Unix (juga tersedia di Windows sebagai libiconv ).

Setelah menyimpan sebagai CSV di bawah Excel di baris perintah:

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(ingat untuk mengganti cp1250 dengan penyandian Anda).

Bekerja cepat dan bagus untuk file besar seperti basis data kode pos, yang tidak dapat diimpor ke GoogleDocs (batas 400.000 sel).


5
Itu tidak berguna jika konten Anda mengandung karakter yang tidak dapat dikodekan pada 1250, cara yang lebih baik adalah mengekspor sebagai "Unicode .txt" di Excel dan gunakan ikonv untuk mengonversi dari Utf16. Mungkin juga melakukan sedatau trmenerjemahkan dari '\ t' ke ','
Sebastian

5
Pengkodean default Excel tampaknya CP858 saat menyimpan sebagai CSV atau MS-DOS CSV, dan Windows 1252 saat menyimpan sebagai Windows CSV (seperti yang diuji pada Excel untuk Mac 2011).
claymation

4
Saya sepenuhnya setuju bahwa ini tidak berguna, karena ketika Excel menyimpan dalam format .csv, ia kehilangan informasi ketika datang ke titik kode Unicode yang tidak dapat dikodekan dalam pengkodean titik satu byte per kode.
Flimm

26

Anda dapat melakukan ini pada mesin Windows modern tanpa perangkat lunak pihak ketiga. Metode ini dapat diandalkan dan akan menangani data yang mencakup koma yang dikutip, karakter tab yang dikutip, karakter CJK, dll.

1. Simpan dari Excel

Di Excel, simpan data untuk file.txtmenggunakan tipe Unicode Text (*.txt).

2. Mulai PowerShell

Jalankan powershelldari menu Start.

3. Muat file dalam PowerShell

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. Simpan data sebagai CSV

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

2
Metode ini bekerja sempurna untuk file CSV dengan lebih dari 15.000 catatan, dengan garis lebih dari batas 1024 karakter yang dikenakan oleh Notepad. Membutuhkan detik, dan tidak menggunakan perangkat lunak pihak ketiga. Terima kasih!
mutlak

Ahh, bahkan ketika saya mencoba menggunakan Google Sheets, saya mengalami masalah yang sama. Jadi mungkin strategi PowerShell ini akan berhasil. Inilah masalah saya. Untuk karakter tertentu seperti emoji tertentu, Anda perlu menggunakan CHARACTER SET utf8mb4seperti yang dijelaskan di sini: stackoverflow.com/a/10959780/470749
Ryan

1
@Ryan Masalah itu khusus untuk MySQL. Saya baru saja mencoba karakter bermasalah dalam pertanyaan itu dan itu bekerja dengan baik di Excel dan PowerShell.
Don Cruickshank

24

Satu-satunya "cara mudah" untuk melakukan ini adalah sebagai berikut. Pertama, sadari bahwa ada perbedaan antara apa yang ditampilkan dan apa yang disimpan dalam file Excel .csv.

  1. Buka file Excel di mana Anda memiliki info (.xls, .xlsx)
  2. Di Excel, pilih "CSV (Comma Delimited) (* .csv) sebagai tipe file dan simpan sebagai tipe itu.
  3. Di NOTEPAD (ditemukan di bawah "Program" dan kemudian Aksesori di menu Mulai), buka file .csv yang disimpan di Notepad
  4. Kemudian pilih -> Simpan Sebagai ... dan di bagian bawah kotak "simpan sebagai", ada kotak pilih berlabel "Pengkodean". Pilih UTF-8 (JANGAN gunakan ANSI atau Anda kehilangan semua aksen dll). Setelah memilih UTF-8, kemudian simpan file ke nama file yang sedikit berbeda dari aslinya.

File ini dalam UTF-8 dan mempertahankan semua karakter dan aksen dan dapat diimpor, misalnya, ke dalam MySQL dan program basis data lainnya.

Jawaban ini diambil dari forum ini .


9
Ini tidak benar, karena langkah 2, menyimpan sebagai CSV. Masalahnya dengan ini adalah bahwa Excel menyimpan file CSV di cp1252, yang merupakan pengkodean satu byte per kode-titik. Ini menyebabkan hilangnya informasi untuk karakter yang tidak dapat ditampung dalam satu byte.
Flimm

Ini bekerja untuk saya, tetapi saya tidak mengerti mengapa. File saya yang dihasilkan oleh javascript selalu salah dibaca di excel (sebagai penyandian berbeda). Tetapi ketika saya membuka di notepad dan menyimpan sebagai utf-8, itu berfungsi dengan baik! Jadi, sepertinya ada metadata dengan pengkodeannya. Bagaimana itu bekerja? Jika notepad dapat menyimpan file UTF-8 CSV dan Excel dapat membacanya, apakah mungkin dalam program saya menghasilkan file CSV UTF-8 yang benar, apakah Excel dapat membaca?
felipeaf

Bekerja untukku. Dalam XSLX dikonversi dari Access. Format diakritik dan hanya LF dan ISO-tanggal semua OK. Satu atau yang lain tidak bekerja dengan solusi yang lebih populer.
RolfBly

21

Satu lagi yang saya temukan berguna: " Angka " memungkinkan pengaturan encoding saat menyimpan sebagai CSV.


8
^ ini adalah aplikasi di Mac OSX
Sruit A.Suk

juga berhati-hatilah dengan Bilangan karena memiliki keterbatasan dalam jumlah baris, dan saya telah mengonversi data seperti ini sebelum tidak menyadarinya telah memangkas sebagian. Excel / CSV memiliki batas yang jauh lebih tinggi.
MrE

14

"nevets1219" benar tentang Google docs, namun jika Anda hanya "mengimpor" file itu sering tidak mengubahnya menjadi UTF-8.

Tetapi jika Anda mengimpor CSV ke Google spreadsheet yang ada itu dikonversi ke UTF-8.

Ini resepnya:

  • Pada layar utama Documents (atau Drive) klik tombol "Buat" dan pilih "Spreadsheet"
  • Dari menu "File" pilih "Impor"
  • Klik "Pilih File"
  • Pilih "Ganti spreadsheet"
  • Pilih karakter yang Anda gunakan sebagai Pemisah
  • Klik "Impor"
  • Dari menu "File" pilih "Unduh sebagai" -> CSV (sheet saat ini)

File yang dihasilkan akan berada di UTF-8


2
Masalah dengan jawaban ini adalah bagaimana Anda membuat file CSV sejak awal. Jika Anda melakukannya dengan sederhana menyimpan sebagai CSV di Excel, file CSV akan berada di cp1252, yang merupakan pengkodean satu byte per kode-titik. Ini akan menyebabkan hilangnya informasi ketika datang ke karakter yang tidak dapat ditampung dalam satu byte.
Flimm

Nah, itu masalah dengan semua jawaban ini. Dan akan ada jawaban untuk bagaimana mengkonversi ke UTF-8 karena tidak ada cara untuk mengetahui atau mengontrol apa pengkodean aslinya.
RedYeti

1
Beberapa jawaban memang berbicara tentang bagaimana mengatasi masalah itu, misalnya, stackoverflow.com/a/15500052/247696
Flimm

13

Menggunakan Notepad ++

Ini akan memperbaiki file CSV rusak yang disimpan oleh Excel dan menyimpannya kembali dalam penyandian yang benar.

  • Ekspor CSV dari Excel
  • Muat ke Notepad ++
  • Perbaiki penyandian
  • Menyimpan

Excel menyimpan dalam CP-1252 / Windows-1252. Buka file CSV di Notepad ++. Pilih

Encoding > Character Sets > Western European > Windows-1252

Kemudian

Encoding > Convert to UTF-8
File > Save

Pertama-tama beri tahu Notepad ++ pengodeannya, lalu konversi. Beberapa jawaban lain ini mengonversi tanpa mengatur pengkodean yang tepat terlebih dahulu, bahkan membuat file semakin kacau. Mereka akan mengubah apa yang harus menjadi . Jika karakter Anda tidak cocok dengan CP-1252 maka itu sudah hilang ketika disimpan sebagai CSV. Gunakan jawaban lain untuk itu.


Saya mungkin mendapatkan ini salah, tetapi Anda tidak dapat menyimpan file sebagai ".csv" di Notepad ++ dan itulah masalahnya.
Daniel Maurer

1
Ya kamu bisa. Anda hanya menyimpan file teks, dan .csvini file teks. Jawaban ini akan membuka file CSV yang rusak oleh Excel, memperbaikinya, lalu menyimpannya kembali dengan pengkodean yang tepat.
Chloe

Apa yang Anda komunikasikan memiliki konsekuensi yang jauh jangkauannya. Dengan menggunakan metode yang unggul ini, kita dapat mencapai kualitas data yang lebih tinggi! Bravo! (Kuis: mengapa komentar ini sangat
aneh

9

Di bawah Excel 2016 dan lebih tinggi (termasuk Office 365), ada opsi CSV yang didedikasikan untuk format UTF-8.

Di Office 365, lakukan Simpan Sebagai; di mana sebelumnya orang mungkin telah memilih CSV (Comma Delimited), sekarang salah satu jenis file yang dapat Anda simpan seperti CSV UTF-8 (Comma delimited) (* .csv)


1
Anda harus memberikan beberapa petunjuk tentang cara menggunakan opsi itu.
rovyko

1
@exgecko yakin: ini disebut tombol / menu "Simpan". Sekarang ada empat jenis ekspor CSV di Excel 2016 di Windows: CSV menyimpan sebagai "ANSI" (kurang lebih setara dengan Latin1, tapi itu mungkin berbeda dengan instalasi OS non-barat, saya tidak yakin), UTF-8 CSV menyimpan sebagai UTF-8 dengan BOM, CSV (DOS) menyimpan sebagai CP850 (sekali lagi, apakah ini tergantung pada instalasi?) dan CSV (Mac) disimpan sebagai MacRoman.

Namun, Excel hanya akan dapat membaca file UTF-8 dan ANSI CSV (Excel dapat menggunakan BOM untuk memilih). Untuk mengimpor dari penyandian lain, ganti nama menjadi .txt, buka dari Excel (Anda memiliki daftar penyandian yang panjang untuk dipilih), dan karena itu tidak akan menafsirkan pemisah dengan benar, gunakan tombol "convert" untuk membagi baris. Anda juga dapat menggunakan trik ini ketika mengimpor CSV dari konvensi bahasa yang berbeda (dalam bahasa Perancis misalnya, pemisah yang diajukan adalah titik koma, karena koma sudah digunakan sebagai pemisah desimal).

1
@ Jean-ClaudeArbaut Aneh, saya tidak melihat opsi UTF-8 CSV di Excel 2016.
rovyko

1
@dexgecko Aneh, memang. Menurut halaman ini (dalam bahasa Perancis, maaf), fungsi ditambahkan pada bulan november 2016, dalam versi build 1610. Saat ini saya memiliki versi 1802. Namun, saya pikir hanya Office 365 yang mengalami evolusi semacam itu, dan saya menggunakan Office Pro 2016 (bukan rasa 365). Mungkin mencoba memperbarui Office Anda.

8

Bagi mereka yang mencari solusi yang sepenuhnya terprogram (atau setidaknya sisi-server), saya sudah sangat sukses menggunakan alat xls2csv catdoc.

Pasang catdoc:

apt-get install catdoc

Lakukan konversi:

xls2csv -d utf-8 file.xls > file-utf-8.csv 

Ini sangat cepat.

Perhatikan bahwa Anda harus menyertakan -d utf-8flag, jika tidak maka akan mengkodekan output secara defaultcp1252 pengkodean , dan Anda berisiko kehilangan informasi.

Perhatikan bahwa xls2csvjuga hanya berfungsi dengan .xlsfile, itu tidak bekerja dengan .xlsxfile.


Atau pilih pengkodean keluaran yang berbeda, tidak dapat memperbaiki masalah semua orang dengan satu jawaban :-)
mpowered

2
Saya tahu ini sangat disayangkan, tetapi kenyataannya adalah bahwa jawaban ini akan menyebabkan masalah bagi beberapa pengguna. Fakta bahwa Anda hanya pernah menjalankan ini dengan karakter yang sesuai dengan cp1252 hanya beruntung, Anda tidak memberikan peringatan tentang risiko ini dalam jawabannya, Anda hanya mengatakan bahwa itu "bekerja tanpa hambatan". Anda tidak diminta untuk memperbaiki masalah semua orang, hanya masalah OP, yang dibagikan banyak orang.
Flimm

1
Begitulah, saya memperbaiki masalah di pos jawaban dan menghapus downvote.
Flimm

7

Bagaimana dengan menggunakan Powershell.

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8

1
Teks karakter Spanyol non-ascii akan diubah dari karakter Spanyol asli ke string penyandian yang digunakan oleh ANSI. Jadi, teksnya tidak akan sama dengan aslinya.
Jason Williams

7

Cara termudah: Tidak perlu Open office dan google docs

  1. Simpan file Anda sebagai "file teks Unicode";
  2. sekarang Anda memiliki file teks unicode
  3. buka dengan "notepad" dan "Simpan sebagai" dengan memilih "utf-8" atau halaman kode lain yang Anda inginkan
  4. ganti nama ekstensi file dari "txt" ke "csv". Ini akan menghasilkan file UTF-8 csv yang dibatasi-tab.
  5. Jika Anda ingin file yang diubah koma , buka csvfile yang baru saja Anda ganti namanya dan ganti semua tab dengan koma. Untuk melakukan ini di Notepad pada Win 10, cukup pilih satu bidang tab lalu klik Ctrl+H. Di jendela yang terbuka, ketikkan koma ,di bidang "Ganti dengan" lalu klik "Ganti Semua". Simpan file Anda. Hasilnya akan berupa file csv UTF-8 dibatasi koma.

Jangan membukanya dengan MS-Office !!! Sekarang Anda memiliki file CSV yang dibatasi tab. Atau, yang dibatasi koma jika Anda menerapkan langkah nomor 5.


2
Untuk file yang dibatasi tab, mungkin lebih baik menggunakan .txtekstensi. csv, yaitu file yang dipisahkan koma, hanya membingungkan.
dof1985

5

Walaupun kelihatannya lucu, cara termudah yang saya temukan untuk menyimpan spreadsheet 180MB ke file UTF8 CSV adalah memilih sel ke dalam Excel, menyalinnya dan menempelkan konten clipboard ke dalam SublimeText.


1
Ini berfungsi karena Excel menyediakan versi TSV pilihan melalui clipboard. Anda juga dapat menggunakan Notepad dan bukan SublimeText tetapi ingat untuk menyimpannya dengan pengkodean UTF-8 jika Anda melakukannya!
Don Cruickshank


3

Dengan asumsi lingkungan Windows, simpan dan bekerja dengan file seperti biasa di Excel tetapi kemudian buka file Excel yang disimpan di Gnome Gnumeric (gratis). Simpan Gnome Gnumeric's spreadsheet sebagai CSV yang - bagi saya - menyimpannya sebagai UTF-8 CSV.


3

Cara mudah untuk melakukannya: unduh kantor terbuka (di sini ), muat spreadsheet dan buka file excel ( .xlsatau .xlsx). Kemudian simpan saja sebagai file CSV teks dan jendela terbuka meminta untuk menyimpan format saat ini atau untuk menyimpan sebagai format .ODF. pilih "simpan format saat ini" dan di jendela baru pilih opsi yang berfungsi lebih baik untuk Anda, sesuai dengan bahasa tempat file Anda ditulis. Untuk bahasa Spanyol, pilih Eropa Barat ( Windows-1252/ WinLatin 1) dan file berfungsi dengan baik. Jika Anda memilih Unicode ( UTF-8), itu tidak akan berfungsi dengan karakter Spanyol.


3
Tidak ada alasan mengapa UTF-8 tidak akan berfungsi dengan karakter Spanyol.
Flimm

3
  1. Simpan file xls (file Excel) sebagai Unicode text => file akan disimpan dalam format teks (.txt)

  2. Ubah format dari .txt ke .csv (ganti nama file dari XYX.txt ke XYX.csv


3
Ini tidak berhasil karena instruksi Anda tidak menyertakan langkah yang diperlukan untuk mengubah tab menjadi koma dalam data file.
Matius Rodatus

1
"Teks Unicode" Excel adalah UTF-16, bukan UTF-8 seperti yang diminta dalam pertanyaan.
Flimm

3

Saya juga menemukan masalah yang sama tetapi ada solusi mudah untuk ini.

  1. Buka file xlsx Anda di Excel 2016 atau lebih tinggi.
  2. Dalam "Simpan Sebagai" pilih opsi ini: "(CSV UTF-8 (Dipisahkan Koma) *. Csv)"

Ini berfungsi dengan baik dan file csv dihasilkan yang dapat diimpor dalam perangkat lunak apa pun. Saya mengimpor file csv ini dalam database SQLITE saya dan berfungsi dengan baik dengan semua karakter unicode utuh.


Opsi ini tidak tersedia di salinan Excel 2016. Apakah Anda menggunakan versi Office 365?
Don Cruickshank

2

Datang di masalah yang sama dan googled posting ini. Tak satu pun dari yang di atas bekerja untuk saya. Akhirnya saya mengonversi Unicode .xls ke .xml (pilih Simpan sebagai ... XML Spreadsheet 2003) dan menghasilkan karakter yang benar. Lalu saya menulis kode untuk mem-parsing xml dan mengekstraksi konten untuk saya gunakan.


2

Saya telah menulis skrip Python kecil yang dapat mengekspor lembar kerja di UTF-8.

Anda hanya perlu menyediakan file Excel sebagai parameter pertama diikuti oleh sheet yang ingin Anda ekspor. Jika Anda tidak memberikan lembar, skrip akan mengekspor semua lembar kerja yang ada di file Excel.

#!/usr/bin/env python

# export data sheets from xlsx to csv

from openpyxl import load_workbook
import csv
from os import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def get_all_sheets(excel_file):
    sheets = []
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    all_worksheets = workbook.get_sheet_names()
    for worksheet_name in all_worksheets:
        sheets.append(worksheet_name)
    return sheets

def csv_from_excel(excel_file, sheets):
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    for worksheet_name in sheets:
        print("Export " + worksheet_name + " ...")

        try:
            worksheet = workbook.get_sheet_by_name(worksheet_name)
        except KeyError:
            print("Could not find " + worksheet_name)
            sys.exit(1)

        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
        for row in worksheet.iter_rows():
            lrow = []
            for cell in row:
                lrow.append(cell.value)
            wr.writerow(lrow)
        print(" ... done")
    your_csv_file.close()

if not 2 <= len(sys.argv) <= 3:
    print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
    sys.exit(1)
else:
    sheets = []
    if len(sys.argv) == 3:
        sheets = list(sys.argv[2].split(','))
    else:
        sheets = get_all_sheets(sys.argv[1])
    assert(sheets != None and len(sheets) > 0)
    csv_from_excel(sys.argv[1], sheets)

Saya telah memperbarui implementasinya sedikit dan membuat intisari gist.github.com/julianthome/2d8546e7bed869079ab0f409ae0faa87
Julian

2

Excel biasanya menyimpan file csv sebagai encoding ANSI bukan utf8.

Salah satu opsi untuk memperbaiki file adalah menggunakan Notepad atau Notepad ++:

  1. Buka .csv dengan Notepad atau Notepad ++.
  2. Salin konten ke papan klip komputer Anda.
  3. Hapus konten dari file.
  4. Ubah penyandian file ke utf8.
  5. Tempelkan konten kembali dari clipboard.
  6. Simpan file.

Tidak yakin tentang versi lama NP ++, tetapi dalam versi saat ini Anda dapat memilih Pengkodean> Konversi ke UTF-8. menggantikan langkah 2-5
Felk

1

Pilihan kedua untuk "nevets1219" adalah membuka file CSV Anda di Notepad ++ dan melakukan konversi ke ANSI.

Pilih di menu atas: Pengkodean -> Konversikan ke Ansi


Tidak tahu mengapa Anda diturunkan suara. Notepad ++ melakukannya untuk saya. Tidak dapat menyimpan file saya di Google Spreadsheet karena bersifat rahasia.
Zane

3
Masalah dengan jawaban ini adalah bagaimana Anda menghasilkan file CSV sejak awal. Jika Anda hanya menyimpan sebagai CSV dari Excel, pengkodeannya akan menjadi cp1252, yang merupakan pengkodean satu byte per kode-titik, dan karenanya akan kehilangan informasi untuk karakter yang tidak cocok dengan itu. Juga, pada akhirnya, Anda harus mengonversi ke UTF-8, dan tidak ke Ansi, jika Anda ingin melakukan apa yang ditanyakan.
Flimm

Sejauh ini jawaban IMO lebih mudah. Saya menggunakan Excel 2016 dan menemukannya menyimpan ke encoding ANSI secara default, tetapi mendapatkannya ke UTF-8 yang saya inginkan.
rovyko

1

Pengkodean -> Konversi ke Ansi akan menyandikannya dalam ANSI / UNICODE. Utf8 adalah bagian dari Unicode. Mungkin dalam ANSI akan dikodekan dengan benar, tetapi di sini kita berbicara tentang UTF8, @SequenceDigitale.

Ada cara yang lebih cepat, seperti mengekspor sebagai csv (dibatasi koma) dan kemudian, membuka csv itu dengan Notepad ++ (gratis), kemudian Encoding> Convert to UTF8. Tetapi hanya jika Anda harus melakukan ini sekali per file. Jika Anda perlu mengubah dan mengekspor dengan benar, maka solusi terbaik adalah LibreOffice atau GDocs.


5
"Utf8 adalah bagian dari Unicode": ini tidak masuk akal. UTF-8 adalah pengkodean Unicode.
jameshfisher

Saya tidak yakin dapat menemukan opsi "Pengkodean -> Konversi ke Ansi" ini.
Flimm

Cukup ANSI csv di Notepad ++ dan mengubah encoding file ke utf8 menyebabkan karakter Spanyol non-ascii asli akan dikonversi menjadi string encode yang tidak cocok dengan teks asli.
Jason Williams

1

Microsoft Excel memiliki opsi untuk mengekspor spreadsheet menggunakan pengkodean Unicode. Lihat screenshot berikut.

masukkan deskripsi gambar di sini


14
"Teks Unicode" disimpan di UTF-16 LE (Little Endian), bukan di UTF-8 seperti yang diminta oleh OP.
kapak.

Ya, tetapi ini adalah cara terbaik untuk mendapatkan dukungan Unicode untuk nilai x-separated-Anda di Excel. Saya memiliki banyak masalah saat mencoba membuat Excel bermain bola dengan UTF-8! Baca Selengkapnya
mcNux

1

buka .csv baik-baik saja dengan notepad ++. jika Anda melihat pengkodean Anda baik (Anda melihat semua karakter sebagaimana mestinya) tekan pengkodean, lalu konversikan ke ANSI lain - cari tahu apa pengkodean Anda saat ini


yang bekerja untuk saya .. punya masalah dengan karakter yunani ketika diekspormysql db sebagai csv dan mengimpornya ke excel ..
nikolas

1
Masalahnya adalah bagaimana Anda membuat file CSV sejak awal. Jika Anda hanya menyimpan sebagai file CSV di Excel, itu akan menyimpannya di cp1252, yang merupakan pengkodean satu byte-per-kode-titik, dan karenanya kehilangan informasi.
Flimm

1

solusi lain adalah membuka file dengan winword dan menyimpannya sebagai txt dan kemudian membukanya kembali dengan excel dan itu akan berfungsi ISA


1

Simpan Dialog> Alat Tombol> Opsi Web> Tab Pengkodean


Ini tidak berhasil untuk saya. Cara saya memahaminya hanya berlaku saat menyimpan sebagai format web (HTML dll.), Bukan saat menyimpan sebagai CSV.
jogojapan

Bekerja untuk saya - office 2007
Elia Weiss

tidak bekerja di kantor 2010 memilih profil CSV apa pun.
Hart

0

Saya memiliki masalah yang sama dan menemukan tambahan ini , dan berfungsi dengan baik di excel 2013 selain excel 2007 dan 2010 yang disebutkan untuk.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.