UTF8 kodlamalı Excel'den CSV'ye [kapalı]


607

Bir ithalat dosyası olarak kullanmak için bir CSV dosyasına dönüştürmek gereken bazı İspanyolca karakterler (tildes, vb.) Olan bir Excel dosyası var. Ancak, CSV Olarak Kaydet'i yaptığımda ASCII karakterleri olmayan "özel" İspanyolca karakterleri yönetir. Bunu, Mac'te Excel dosyasını oluşturan orijinal kullanıcıdan geliyor gibi görünen sol ve sağ tırnak işaretleri ve uzun çizgilerle de yapıyor gibi görünüyor.

CSV sadece bir metin dosyası olduğundan, UTF8 kodlamasını işleyebileceğinden eminim, bu yüzden bir Excel sınırlaması olduğunu tahmin ediyorum, ancak Excel'den CSV'ye ulaşmanın ve ASCII olmayan karakterleri tutmanın bir yolunu arıyorum bozulmamış.


15
Göndermeden önce bu soruyu gördüm ama zaten bir UTF8 CSV'ye sahip olmak ve Excel'de başka bir şekilde değil açmakla ilgili.
Jeff Treuting

7
Aşağıdaki cevaplar işe yarıyor gibi görünüyor, ancak bunlar sadece geçici çözümlerdir. Excel'in bunu yapmasını bilen var mı?
NielW

2
2 sentimi bırakmak istedim: Çok sayıda deneme yanılma, VBA işlevlerini kullanma girişimleri vb. (Excel 97'yi çeşitli nedenlerle kullanıyorum) ... sadece "CSV (MSDOS) "biçimi bu sorunu benim için çözdü. Benim durumumda, Citrix web semineri (GotoWebinar) CSV verileri, sonumuzda bazı Apex kodunu kırmak için karakterlerle sonuçlanıyor - "CSV (MSDOS)" 'a kaydetmek, CSV dışa aktarmayı Notepad ++' a yüklemeyi ve bir UTF- 8 boş dosya ve yeniden kaydetme. :-P :-)
AMM

2
Bu çok can sıkıcı bir Excel sınırlamasıdır. Bununla ilgili bir uservoice özelliği isteği açtım: excel.uservoice.com/forums/… , oy vermek ve bunu yapmaktan çekinmeyin
Doron Yaacoby

7
Excel UserVoice göre Microsoft .csv geçen ay için UTF-8 üzerinde çalışmaya başladı excel.uservoice.com/forums/...
moloko

Yanıtlar:


405

Basit bir çözüm, Google E-Tablolar'ı kullanmaktır. Yapıştır (yalnızca karmaşık formülleriniz varsa değerler) veya sayfayı içe aktarın, ardından CSV'yi indirin. Sadece birkaç karakter denedim ve çok iyi çalışıyor.

NOT: Google E-Tablolar'ın içe aktarırken kısıtlamaları vardır. Buraya bakın .

NOT: Google E-Tablolar'daki hassas verilere dikkat edin.

EDIT: Başka bir alternatif - temelde kaydetme UTF8 olarak zorlamak için VB makro veya eklentileri kullanırlar. Bu çözümlerden hiçbirini denemedim ama makul görünüyorlar.


63
Belki de Joel Slotsky (Excel'in eski PM'si) On Yaşındaki gönderisini Mutlak Minimum Her Yazılım Geliştiricisi'nde kesinlikle gönderebilir, Unicode ve Karakter Setlerini Kesinlikle Bilmelisiniz ?
Indolering

8
Normal Windows Not Defteri ile (farklı kaydet'i kullanarak ve sonra kodlama seçeneğinde utf-8'i seçerek) benim için çalıştı. Benim için en iyi yaklaşım benim için bu, çünkü makinelerinde yönetici hakları olmayan kullanıcılar tarafından yapılması gerekiyor, bu nedenle ek yazılım yüklemek gerekli değil.
Fer

9
Zahmetsiz OpenOffice JustWorks (tm) - Bence dahil edilmelidir
Rbjz

9
Uhhh. Sırtımda bir titreme vardı. Excel dosyanızda 200.000 satır varsa ne olur? Veya bir excel elektronik tablosuna dahil etmek istemediğiniz hassas veriler içeriyor mu? Gerekirse Openoffice / Libreoffice kullanın.
Seb

2
Dosya boyutu büyükse ne olur? Doğru hatırlamıyorsam, goolge sayfasının boyutu 75M civarında. Ben bir dosya var 700M
News_is_Selection_Bias

133

OpenOffice buldum elektronik tablo uygulaması Calc, CSV verilerini işlemede gerçekten iyi .

"Farklı Kaydet ..." iletişim kutusunda, CSV için farklı kodlamalar almak üzere "Biçim Seçenekleri" ni tıklayın. LibreOffice , AFAIK ile aynı şekilde çalışır.

kalk kaydet iletişim kutusu


Eminim bu işe yarıyor, zaten OpenOffice'e sahip değilim, bu yüzden Google Dokümanlar durumumda daha kolaydı. ama öneri için teşekkürler
Jeff Treuting

19
OpenOffice Calc, "CSV" dosyalarını (alan ayırıcılar, kodlama vb.) Açarken ve kaydederken hem Google Dokümanlar hem de Excel'den daha fazla ve daha iyi seçeneklere sahiptir. Ayrıca, Google Dokümanlar şu anda e-tablo başına 400.000 hücre sınırından muzdariptir ve OpenOffice Calc'da yoktur.
Christian Davén

3
LibreOffice'in de çalıştığını doğrulayabilirim: Excel'de ne yazık ki eksik olan dışa aktarma üzerinde karakter kodlama seçenekleri sunar.
Rupert Rawnsley

1
Bu, hassas verilerle çalışanlar için mükemmel bir seçenektir. OpenOffice paketi, kilitli makineleri olanlar için taşınabilir bir kurulum olabilir.
Nathan

119
  1. Excel sayfasını "Unicode Metin (.txt)" olarak kaydedin. İyi haber şu ki, tüm uluslararası karakterler UTF16'da (not, UTF8'de değil). Ancak, yeni "* .txt" dosyası TAB ile sınırlandırılmıştır, virgülle sınırlandırılmamıştır ve bu nedenle gerçek bir CSV değildir.

  2. (isteğe bağlı) İçe aktarma için SEKME ile ayrılmış bir dosya kullanmıyorsanız, favori metin düzenleyicinizi kullanın ve SEKME karakterlerini virgül "," ile değiştirin.

  3. * .Txt dosyanızı hedef uygulamaya alın. UTF16 biçimini kabul edebildiğinden emin olun.

UTF-16 BMP olmayan kod noktaları desteği ile düzgün bir şekilde uygulandıysa, UTF-16 dosyasını bilgi kaybetmeden UTF-8'e dönüştürebilirsiniz. En sevdiğiniz yöntemi bulmak için size bırakıyorum.

Excel'den Moodle'a veri almak için bu yordamı kullanın.


5
Sonunda işe yarayan bir şey! Yukarıdaki Excel seçeneklerini Excel 2013'te başarılı olmadan denedim. Ayrıştırdığımda \ t bölünmüş karakter olarak kullanmaya başladım ve mükemmel çalıştı!
Mattias Lindberg

1
MySQL'e aktarmak için bir XLS'yi CSV olarak dışa aktarmak gerekiyordu. Excel 2003'ü kullanarak "Unicode Metin (.txt)" biçiminde dışa aktardım, sonra SEKME ile değiştirmek için Notepad ++ kullandım ;, sonra varsayılan "varsayılan dosya kümesi: utf-8", Biçim "CSV ile txt dosyasını phpmyadmin'e aktardım ". Tüm kodlama doğru bir şekilde aktarıldı.
Kai Noack

3
Teşekkür ederim. Bu mantıklı. MS neden hala UTF'yi standart olarak kullanmayı reddediyor.
Oskar Limka

4
@OskarLimka: "UTF" derken, UTF-8 veya UTF-16 mı demek istediniz? Çünkü Microsoft UTF-16'yı biraz kullanıyor.
9'da Flimm

7
"İyi haber şu ki, tüm uluslararası karakterler UTF16'da (not, UTF8'de değil)." : tam bir saçmalık . UTF-8 ve UTF-16, tüm Unicode kod noktaları kümesini kodlamanın iki yoludur.

43

Bunun eski bir soru olduğunu biliyorum, ancak OP ile aynı sorunlarla mücadele ederken bu soruya geldim.

Sunulan çözümlerin hiçbirini uygun bir seçenek bulamadım, bunu sadece Excel kullanarak yapmanın bir yolu olup olmadığını keşfetmek için yola çıktım.

Neyse ki, kayıp karakter sorununun sadece (benim durumumda) xlsx biçiminden csv biçimine kaydederken gerçekleştiğini gördüm. Önce xlsx, sonra csv için xlsx dosyasını kaydetmeye çalıştım. Aslında işe yaradı.

Lütfen bir deneyin ve sizin için işe yarayıp yaramadığını görün. İyi şanslar.


3
Benim için, Mac 2011 için Excel'de bu çalışır, ancak yalnızca seçersem Windows comma separated (CSV). Varsayılan veya DOS CSV seçeneklerini kullanırsam çalışmaz - her ikisi de aksanlı karakterleri rastgele önemsiz karakterlerle değiştirir. Dahil karakterler için test edilmiştir é, è, âgerçek UTF8 ama karakterler karıştırılmış değilse ... bilmiyorum.
user56reinstatemonica8

12
Hızlı onayı - (2011 Mac için Excel) bu yöntemle üretilen dosyalar yok UTF8 CSV'leri üretmek, AMA , onlar en azından doğru karakterleri içeren ve bu nedenle olabilir ki üreten CSV'leri yapmak acısız bir metin editörü UTF8'den dönüştürüldü Bu, Excel'in varsayılan olarak tükettiği gülünç karmaşalı önemsizden ileri doğru büyük bir adımdır.
user56reinstatemonica8

Evet, kabul etti, bu benim için de çalıştı (Excel Mac 2011) ve gerçekten daha fazla oyu hak ediyor.
cbmanica

1
Bu benim için pek işe yaramadı (Excel 2007'yi kullanarak). Dosyamda 2 ASCII olmayan karakter vardı ve bunlardan biri bu şekilde TAMAM kaydedildi, diğeri değildi.
EM0

1
Ortaya çıkan CSV dosyasının, soru sorulduğu gibi UTF-8 değil, UTF-16'da olacağını unutmayın.
9'da Flimm

38

İconv komutunu Unix altında kullanabilirsiniz (Windows'ta libiconv olarak da kullanılabilir) ).

Komut satırına Excel altında CSV olarak kaydettikten sonra:

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

(cp1250'yi kodlamanızla değiştirmeyi unutmayın).

GoogleDocs'a aktarılamayan (400.000 hücre sınırı) posta kodları veritabanı gibi büyük dosyalar için hızlı ve harika çalışır.


5
İçeriğiniz 1250'de kodlanamayan karakterler içeriyorsa, Excel'de "Unicode .txt" olarak dışa aktarmak ve Utf16'dan dönüştürmek için iconv kullanmak daha iyi bir yöntemdir. Belki de '\ t' sedtr
Sebastian

5
CSV veya MS-DOS CSV olarak kaydederken Excel'in varsayılan kodlaması CP858 ve Windows CSV olarak kaydederken Windows 1252 (Mac 2011 için Excel'de test edildiği gibi) gibi görünüyor.
claymation

4
Excel'in .csv biçiminde kaydettiği zaman, kod başına bir bayt kodlamada kodlanamayan Unicode kod noktaları söz konusu olduğunda, bu bilginin tamamen yararsız olduğunu kabul ediyorum.
9'da Flimm

26

Bunu üçüncü taraf yazılımları olmayan modern bir Windows makinesinde yapabilirsiniz. Bu yöntem güvenilirdir ve tırnak içine alınmış virgül, tırnak içine alınmış sekme karakterleri, CJK karakterleri vb. İçeren verileri işler.

1. Excel'den kaydet

Excel'de verileri file.txttürü kullanarak kaydedinUnicode Text (*.txt) .

2. PowerShell'i başlatın

Çalıştırmak powershellBaşlat menüsünden .

3. Dosyayı PowerShell'e yükleyin

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

4. Verileri CSV olarak kaydedin

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

2
Bu yöntem, Not Defteri'nin uyguladığı 1024 karakter sınırını aşan satırları olan 15.000'den fazla kaydı olan bir CSV dosyası için mükemmel çalıştı. Saniyeler alır ve üçüncü taraf yazılımı kullanmaz. Teşekkürler!
mutlak

Ahh, Google E-Tablolar'ı kullanmayı denesem bile aynı sorunla karşılaştım. Belki bu PowerShell stratejisi işe yarardı. Benim sorunum buydu. Belirli emojiler gibi belirli karakterler için CHARACTER SET utf8mb4, burada açıklandığı gibi kullanmanız gerekir : stackoverflow.com/a/10959780/470749
Ryan

1
@Ryan Bu sorun MySQL'e özgüdür. Ben sadece bu sorudaki sorunlu karakteri denedim ve hem Excel hem de PowerShell'de iyi çalıştı.
Don Cruickshank

24

Bunu yapmanın tek "kolay yolu" aşağıdaki gibidir. İlk olarak, görüntülenenler ile Excel .csv dosyasında gizli tutulanlar arasında bir fark olduğunu unutmayın.

  1. Bilgilere sahip olduğunuz bir Excel dosyasını açın (.xls, .xlsx)
  2. Excel'de, dosya türü olarak "CSV (Virgülle Ayrılmış) (* .csv) seçin ve bu tür olarak kaydedin.
  3. NOTEPAD'de ("Programlar" altında ve ardından Başlat menüsünde Donatılar altında bulunur), kaydedilmiş .csv dosyasını Not Defteri'nde açın
  4. Ardından -> Farklı Kaydet ... 'i seçin ve "farklı kaydet" kutusunun altında "Kodlama" olarak etiketlenmiş bir seçim kutusu bulunur. UTF-8'i seçin (ANSI KULLANMAYIN veya tüm aksanları kaybedersiniz vb.). UTF-8'i seçtikten sonra, dosyayı orijinalden biraz farklı bir dosya adına kaydedin.

Bu dosya UTF-8'de bulunur ve tüm karakterleri ve aksanları korur ve örneğin MySQL ve diğer veritabanı programlarına aktarılabilir.

Bu cevap bu forumdan alınmıştır .


9
Bu adım 2 nedeniyle CSV olarak kaydedildiğinde yanlıştır. Bununla ilgili sorun, Excel'in CSV dosyasını kod başına bir baytlık kodlama olan cp1252'ye kaydetmesidir. Bu, bir bayta sığmayan karakterler için bilgi kaybına yol açar.
Mart'ta Flimm

Benim için çalıştı, ama nedenini anlayamıyorum. Javascript tarafından oluşturulan dosyam Excel'de (farklı bir kodlama olarak) her zaman yanlış okunur. Ama not defterinde açıp utf-8 olarak kaydettiğimde, iyi çalışıyor! Yani, kodlamaya sahip bir meta veri var gibi görünüyor. Nasıl çalışır? Not defteri UTF-8 CSV dosyalarını kaydedebilir ve Excel bunları okuyabilirse, programımda Excel'in okuyabileceği doğru UTF-8 CSV dosyaları oluşturmak mümkün mü?
felipeaf

Benim için çalıştı. Access'ten dönüştürülmüş bir XSLX içinde. Aksan işaretleri ve yalnızca LF ve ISO tarihi biçimlerinin tümü uygundur. Biri veya daha fazlası daha popüler çözümlerle çalışmadı.
RolfBly

21

Yararlı bulduğum bir diğeri: " Numbers ", CSV olarak kaydederken kodlama ayarlarına izin veriyor.


8
^ Bu Mac OSX bir uygulama
Sruit A.Suk

Ayrıca satır sayısında sınırlama olduğu için Sayılar konusunda dikkatli olun ve bazılarını kırpmış olduğunu fark etmeden önce bu gibi verileri dönüştürdüm. Excel / CSV'nin çok daha yüksek sınırları vardır.
17'de Mr

14

"nevets1219" Google dokümanları hakkında haklıdır, ancak dosyayı "içe aktarırsanız" genellikle UTF-8'e dönüştürmez.

Ancak CSV'yi mevcut bir Google e-tablosuna içe aktarırsanız UTF-8'e dönüştürülür.

İşte bir tarif:

  • Ana Dokümanlar (veya Drive) ekranında "Oluştur" düğmesini tıklayın ve "Elektronik Tablo" yu seçin
  • "Dosya" menüsünden "İçe Aktar" ı seçin
  • "Dosya Seç" i tıklayın
  • "E-tabloyu değiştir" i seçin
  • Ayırıcı olarak hangi karakteri kullandığınızı seçin
  • "İçe Aktar" ı tıklayın
  • "Dosya" menüsünden "Farklı indir" -> CSV (geçerli sayfa) seçeneğini belirleyin

Ortaya çıkan dosya UTF-8'de olacak


2
Bu yanıtla ilgili sorun, CSV dosyasını ilk etapta nasıl oluşturduğunuzdur. Bunu Excel'de CSV olarak kaydederek basitleştirdiyseniz, CSV dosyası kod başına bir baytlık kodlama olan cp1252'de olacaktır. Bu, bir bayta sığmayan karakterler söz konusu olduğunda bilgi kaybına yol açacaktır.
Mart'ta Flimm

Bu cevapların herhangi birinde bir sorun var. Orijinal kodlamanın ne olduğunu bilmenin veya kontrol etmenin bir yolu olmadığından, UTF-8'e nasıl dönüştürüleceğine dair herhangi bir cevapla olacaktır.
Mart'ta RedYeti

1
Bazı cevaplar bu sorunun nasıl
çözüleceğinden bahsediyor

13

Notepad ++ kullanma

Bu, Excel tarafından kaydedilen bozuk CSV dosyasını düzeltir ve uygun kodlamaya yeniden kaydeder.

  • CSV'yi Excel'den dışa aktarma
  • Notepad ++ 'a yükle
  • Kodlamayı düzeltin
  • Kayıt etmek

Excel, CP-1252 / Windows-1252'ye kaydeder. CSV dosyasını Notepad ++ ile açın. seçmek

Encoding > Character Sets > Western European > Windows-1252

Sonra

Encoding > Convert to UTF-8
File > Save

Önce Notepad ++ 'a kodlamayı söyleyin, sonra dönüştürün. Bu diğer yanıtlardan bazıları, önce doğru kodlamayı ayarlamadan, dosyayı daha da yöneterek dönüştürüyor. Olması gereken şeyi dönüştürürlerdi . Karakteriniz CP-1252'ye uymuyorsa, CSV olarak kaydedildiğinde zaten kaybolmuştur. Bunun için başka bir cevap kullanın.


Bunu yanlış alabilir, ancak dosyayı Notepad ++ 'da bir ".csv" olarak kaydedemezsiniz ve bunun ne olduğunu thats.
Daniel Maurer

1
Evet yapabilirsin. Sadece bir metin dosyasını kaydediyorsunuz ve .csvbir metin dosyası. Bu yanıt, Excel tarafından bozulmuş CSV dosyasını açar, düzeltir, ardından uygun kodlamayla yeniden kaydeder.
Chloe

İletişim kurduğunuz şeyin çok geniş sonuçları var. Bu seçkin yöntemi kullanarak daha yüksek bir veri kalitesi elde edebiliriz! Bravo! (Sınav: Bu yorum neden bu kadar tuhaf?)
thymaro

9

Excel 2016 ve sonraki sürümlerde (Office 365 dahil), UTF-8 biçimine adanmış bir CSV seçeneği vardır.

Office 365'te Farklı Kaydet; önceden CSV (Virgülle Ayrılmış) seçmiş olabilir, şimdi CSV UTF-8 (Virgülle ayrılmış) (* .csv) olarak kaydedebileceğiniz dosya türlerinden biri


1
Bu seçeneğin nasıl kullanılacağı hakkında bazı talimatlar vermelisiniz.
rovyko

1
@dexgecko: "Kaydet" düğmesi / menüsü olarak adlandırılır. Windows'ta Excel 2016'da artık dört CSV dışa aktarma türü var: CSV , "ANSI" (daha fazla veya daha az eşdeğer Latin1 olarak kaydediliyor, ancak bu, batı dışı bir işletim sistemi yüklemesiyle farklı olabilir, emin değilim), UTF-8 CSV BOM ile UTF-8 olarak kaydeder, CSV (DOS) CP850 olarak kaydeder (yine mais yüklemeye bağlıdır?) ve CSV (Mac) MacRoman olarak kaydeder.

Ancak, Excel yalnızca UTF-8 ve ANSI CSV dosyalarını okuyabilir (Excel seçmek için Malzeme Listesini kullanabilir). Başka bir kodlamadan içe aktarmak için, .txt olarak yeniden adlandırın, Excel'den açın (daha sonra seçim yapabileceğiniz uzun bir kodlama listeniz vardır) ve ayırıcıyı doğru yorumlayamayacağından satırları bölmek için "dönüştür" düğmesini kullanın. Bu hileyi farklı bir dil kuralından bir CSV içe aktarırken de kullanabilirsiniz (virgül zaten ondalık ayırıcı olarak kullanıldığı için dosyalanmış ayırıcı noktalı virgültür).

1
@ Jean-ClaudeArbaut Garip, Excel
2016'mda

1
@dexgecko Garip, gerçekten. Bu sayfaya göre (fransızca, üzgünüm), işlevsellik Kasım 2016'da, yapı sürümü 1610'da eklendi. Şu anda 1802 sürümüne sahibim. Ancak, yalnızca Office 365'in bu tür gelişmeler olduğunu düşündüm ve Office Pro 2016'yı (365 lezzetini değil) kullanıyorum. Belki Office'inizi güncellemeyi deneyin.

8

Tamamen programatik (veya en azından sunucu tarafı) bir çözüm arayanlar için catdoc'un xls2csv aracını kullanarak büyük bir başarı elde ettim.

Catdoc'ı yükleyin:

apt-get install catdoc

Dönüşümü yapın:

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

Bu çok hızlı.

-d utf-8Bayrağı dahil etmenin önemli olduğunu unutmayın , aksi takdirde çıkışı varsayılan olarak kodlarcp1252 kodlamada bilgi kaybetme riskiyle karşı karşıya kalırsınız.

Not xls2csvAyrıca sadece çalışır .xlsdosyalar, onunla çalışmayı değil .xlsxdosyaları.


Veya farklı bir çıktı kodlaması seçin, herkesin sorunlarını tek bir cevapla
düzeltemez

2
Bunun talihsiz olduğunu biliyorum, ama gerçek şu ki bu cevap bazı kullanıcılar için sorunlara neden olacak . Bunu sadece cp1252'ye uyan karakterlerle çalıştırdığınız gerçeği sadece şanslı, cevapta bu risk hakkında hiçbir uyarı vermediniz, sadece "sorunsuz çalıştığını" söylediniz. Sizden herkesin sorunlarını düzeltmeniz istenmedi, sadece birçok kişinin paylaştığı OP'ler.
Mart'ta

1
İşte, cevap yazısında sorunu düzelttim ve aşağı oyu kaldırdım.
Flimm

7

Powershell'i kullanmaya ne dersiniz?

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

1
Ascii olmayan İspanyolca karakterlerin metni orijinal İspanyolca karakterden ANSI tarafından kullanılan kodlama dizesine dönüştürülecektir. Bu nedenle, metin orijinal ile aynı olmayacaktır.
Jason Williams

7

En kolay yol: Gerek yok Open office ve google dokümanlar

  1. Dosyanızı "Unicode metin dosyası" olarak kaydedin;
  2. şimdi bir unicode metin dosyanız var
  3. "not defteri" ve "Farklı kaydet" ile "utf-8" veya istediğiniz diğer kod sayfasını seçerek açın
  4. dosya uzantısını "txt" yerine "csv" olarak yeniden adlandırın. Bu sekmeyle ayrılmış UTF-8 csv dosyasına neden olur.
  5. Virgülle ayrılmış bir dosya istiyorsanız , csvyeniden adlandırdığınız dosyayı açın ve tüm sekmeleri virgülle değiştirin. Bunu Win 10'daki Not Defteri'nde yapmak için bir sekme alanı seçip Tamam'ı tıklatın Ctrl+H. Açılan pencerede ,, "Şununla değiştir" alanına virgül yazın ve "Tümünü Değiştir" i tıklayın. Dosyanızı kaydedin. Sonuç, virgülle sınırlanmış UTF-8 csv dosyası olacaktır.

Yine de MS-Office ile açmayın !!! Artık sekmeyle ayrılmış bir CSV dosyanız var. Veya adım 5'i uyguladıysanız virgülle ayrılmış bir tane.


2
Sekmeyle ayrılmış dosya için bir .txtuzantı kullanmak daha iyi olabilir . csvyani virgülle ayrılmış dosyalar sadece kafa karıştırıcıdır.
dof1985

5

Göründüğü kadar komik, 180MB elektronik tablomu bir UTF8 CSV dosyasına kaydetmenin en kolay yolu hücreleri Excel'e seçmek, kopyalamak ve pano içeriğini SublimeText'e yapıştırmaktı.


1
Excel , seçimin pano aracılığıyla TSV sürümünü sağlaması nedeniyle çalışır . SublimeText yerine Not Defteri'ni de eşit derecede kullanabilirsiniz, ancak UTF-8 kodlamasıyla kaydetmeyi unutmayın!
Don Cruickshank


3

Bir Windows ortamı varsayarsak, dosyayı her zamanki gibi Excel'de kaydedin ve onunla çalışın, ancak kaydedilen Excel dosyasını Gnome Gnumeric'de (ücretsiz) açın. Gnome Gnumeric'in e-tablosunu CSV olarak kaydedin - ki yine de benim için onu UTF-8 CSV olarak kaydeder.


3

Bunu yapmanın kolay yolu: açık ofisi indirin ( burada ), e-tabloyu yükleyin ve excel dosyasını ( .xlsveya .xlsx) açın. Sonra bir metin CSV dosyası olarak kaydedin ve geçerli biçimi korumayı veya .ODF biçimi olarak kaydetmenizi isteyen bir pencere açılır. "geçerli biçimi koru" seçeneğini belirleyin ve yeni pencerede, dosyanızın yazıldığı dile göre sizin için daha iyi çalışan seçeneği belirtin. İspanyolca dil için Batı Avrupa ( Windows-1252/ WinLatin 1) seçin ve dosya gayet iyi çalışıyor. Unicode ( UTF-8) seçeneğini belirlerseniz , İspanyolca karakterlerle çalışmaz.


3
UTF-8'in İspanyolca karakterlerle çalışmamasının bir nedeni yoktur.
Mart'ta Flimm

3
  1. Xls dosyasını (Excel dosyası) Unicode metin olarak kaydet => dosya metin biçiminde (.txt) kaydedilir

  2. Biçimi .txt'den .csv'ye değiştirin (dosyayı XYX.txt'den XYX.csv olarak yeniden adlandırın)


3
Bu işe yaramaz, çünkü talimatlarınız sekmeleri dosya verilerindeki virgüllere dönüştürme adımını içermez.
Matthew Rodatus

1
Excel'in "Unicode metni", soruda istendiği gibi UTF-8 değil, UTF-16'dır.
9'da Flimm

3

Aynı problemle de karşılaştım ama bunun için kolay bir çözüm var.

  1. Xlsx dosyanızı Excel 2016 veya sonraki sürümlerde açın.
  2. "Farklı Kaydet" bölümünde bu seçeneği belirtin: "(CSV UTF-8 (Virgülle Ayrılmış) *. Csv)"

Mükemmel çalışır ve herhangi bir yazılımda içe aktarılabilecek bir csv dosyası oluşturulur. Bu csv dosyasını SQLITE veritabanımda içe aktardım ve tüm unicode karakterlerle mükemmel çalışıyor.


Bu seçenek Excel 2016 kopyamda mevcut değil. Office 365 sürümünü mü kullanıyorsunuz?
Don Cruickshank

2

Aynı soruna rastladı ve bu gönderiyi googled. Yukarıdakilerin hiçbiri benim için çalışmadı. Sonunda Unicode .xls'imi .xml'ye dönüştürdüm (Farklı kaydet ... XML Elektronik Tablosu 2003'ü seçin) ve doğru karakteri üretti. Sonra benim kullanım için xml ayrıştırmak ve içerik ayıklamak için kod yazdı.


2

UTF-8'de çalışma sayfalarını verebilen küçük bir Python betiği yazdım.

Excel dosyasını ilk parametre olarak ve ardından dışa aktarmak istediğiniz sayfaları sağlamanız yeterlidir. Sayfaları sağlamazsanız, komut dosyası Excel dosyasında bulunan tüm çalışma sayfalarını dışa aktarır.

#!/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)

Uygulamayı biraz güncelledim ve bir gist
Julian

2

Excel genellikle bir csv dosyasını utf8 yerine ANSI kodlaması olarak kaydeder.

Dosyayı düzeltmek için bir seçenek Notepad veya Notepad ++ kullanmaktır:

  1. .Csv dosyasını Not Defteri veya Not Defteri ++ ile açın.
  2. İçerikleri bilgisayar panonuza kopyalayın.
  3. İçerikleri dosyadan silin.
  4. Dosyanın kodlamasını utf8 olarak değiştirin.
  5. İçeriği panodan geri yapıştırın.
  6. Dosya 'yı kaydet.

NP ++ 'nın eski sürümlerinden emin değilim, ancak mevcut sürümde Kodlama> UTF-8'e Dönüştür'ü seçebilirsiniz. cümledeki 2-5 arasındaki adımları
Felk

1

"Nevets1219" için ikinci bir seçenek CSV dosyanızı Notepad ++ ile açmak ve ANSI'ye dönüştürme yapmaktır.

Üst menüden seçim yapın: Kodlama -> Ansi'ye Dönüştür


Neden reddedildiđine dair bir fikrim yok. Notepad ++ benim için yaptı. Gizli olduğundan dosyamı Google E-Tabloda saklayamıyorum.
Zane

3
Bu yanıtla ilgili sorun, CSV dosyasını ilk etapta nasıl oluşturduğunuzdur. Excel'den CSV olarak kaydederseniz, kodlama, kod başına bir baytlık kodlama olan cp1252 olur ve bu nedenle buna uymayan karakterler için bilgi kaybeder. Ayrıca, sorunun sorulmasını istediğiniz şeyi yapmak istiyorsanız, sonunda Ansi'ye değil UTF-8'e dönüştürmelisiniz.
10'da Flimm

Bu IMO çok daha kolay cevap. Excel 2016 kullanıyorum ve varsayılan olarak ANSI kodlamasına kaydetti, ancak istediğim UTF-8'e aldım.
rovyko

1

Kodlama -> Ansi'ye Dönüştür bunu ANSI / UNICODE içinde kodlar. Utf8, Unicode'un bir alt kümesidir. Belki ANSI'de doğru bir şekilde kodlanacaktır, ancak burada UTF8, @SequenceDigitale hakkında konuşuyoruz.

Csv (virgülle ayrılmış) olarak dışa aktarma ve sonra o csv'yi Notepad ++ (ücretsiz) ile açma, ardından Kodlama> UTF8'e Dönüştürme gibi daha hızlı yollar vardır. Ancak bunu dosya başına bir kez yapmanız gerekiyorsa. Geçici olarak değiştirmeniz ve dışa aktarmanız gerekiyorsa, en iyisi LibreOffice veya GDocs çözümüdür.


5
"Utf8, Unicode'un bir alt kümesidir": bu bir anlam ifade etmiyor. UTF-8, Unicode'un bir kodlamasıdır .
jameshfisher

Bu "Kodlama -> Ansi'ye Dönüştür" seçeneğini bulabileceğimden emin değilim.
9'da Flimm

Notepad ++ uygulamasında bir ANSI csv dosyası ve kodlamanın utf8 olarak değiştirilmesi, ascii olmayan orijinal İspanyolca karakterlerin orijinal metinle eşleşmeyen kodlama dizelerine dönüştürülmesine neden olur.
Jason Williams

1

Microsoft Excel, Unicode kodlamasını kullanarak e-tabloyu dışa aktarma seçeneğine sahiptir. Aşağıdaki ekran görüntüsüne bakın.

resim açıklamasını buraya girin


14
"Unicode Metin" OP tarafından sorulduğu gibi UTF-8'e değil, UTF-16 LE'ye (Küçük Endian) kaydeder.
balta.

Evet, ancak Excel'de x-ayrılmış değerleriniz için Unicode desteği almanın en iyi yoludur. UTF-8 ile Excel oynamayı denemek için her türlü sorun yaşadım! Devamını Oku
mcNux

1

.csv para cezasını notepad ++ ile açın. kodlamanızın iyi olduğunu görürseniz (tüm karakterleri olması gerektiği gibi görürsünüz) kodlamaya basın, sonra ANSI'ye dönüştürün - geçerli kodlamanızın ne olduğunu öğrenin


benim için çalıştı .. csv olarak ihraç ve excel ithal
mysql

1
Buradaki sorun, ilk etapta CSV dosyasını nasıl oluşturduğunuzdur. Excel'de CSV dosyası olarak kaydederseniz, onu kod başına bir baytlık kodlama olan cp1252'ye kaydeder ve bu nedenle bilgi kaybeder.
Mart'ta Flimm

1

başka bir çözüm dosyayı winword ile açmak ve txt olarak kaydetmek ve sonra excel ile yeniden açmak ve ISA çalışacak


1

Kaydet İletişim Kutusu> Araçlar Düğmesi> Web Seçenekleri> Kodlama Sekmesi


Bu benim için işe yaramıyor. Anlama şeklim, CSV olarak kaydederken değil, yalnızca bir web biçimi (HTML vb.) Olarak kaydederken etkili olur.
jogojapan

Benim için çalışıyor - ofis 2007
Elia Weiss

herhangi bir CSV profili seçerek office 2010'da çalışmıyor.
Hart

0

Ben de aynı sorun var ve bu eklenti rastlamak , ve excel 2013 ve excel 2007 ve 2010 için söz olduğu gibi gayet iyi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.