Excel 2007'de satır sonlarıyla CSV'yi içe aktarma


130

Excel'de açılacak bir CSV dosyasına arama sonuçlarını aktarmaya yönelik bir özellik üzerinde çalışıyorum. Alanlardan biri, satır sonları, virgüller, alıntılar vb. İçerebilen serbest metin alanıdır. Buna karşı koymak için alanı çift tırnak (") içine aldım.

Ancak, verileri Excel 2007'ye aktardığımda, uygun sınırlayıcıyı ayarladığımda ve metin niteleyiciyi çift tırnak olarak ayarladığımda, satır sonları hala satır sonlarında yeni kayıtlar oluşturuyor, burada tüm metin alanını bir tek hücre.

Ayrıca CR / LF (\ r \ n) 'yi sadece CR (\ r) ile ve yine sadece LF (\ n) ile değiştirmeyi denedim, ama şans yok.

Bu davranışla başka biri karşılaştı mı ve öyleyse, nasıl düzelttiniz?

TIA,
-J

DÜZENLEME:
Sorunu tekrarlamak için elle yazdığım hızlı bir dosya.

ID, Name, Açıklama
"12345", "Smith, Joe", "Hey.
Benim adım Joe."

Bunu Excel 2007'ye aktardığımda, bir başlık satırı ve iki kayıt ile karşılaşıyorum. "Smith, Joe" daki virgülün doğru şekilde kullanıldığını unutmayın. Sorunlara neden olan sadece satır sonlarıdır.


CSV dosyasına Notepad ++ 'da baktım ve her şey doğru görünüyor. Virgül içeren başka alanlarım var ve bunlar düzgün şekilde içe aktarılıyor. Sorunlara neden olan sadece satır sonlarıdır.
jeremyalan

4
Çok satırlı veri ve excel içeren UTF8 .csv dosyalarıyla ilgili sorunlar yaşıyorum. Sonunda dosyayı Google Dokümanlar'a yükledim, bir google sayfasına açtım ve ardından .xls dosyası olarak indirdim. Bu şekilde benim için iyi çalışıyor.
creuzerm

Yanıtlar:


53

Excel (en azından XP'de Office 2007'de), bir CSV dosyasının Dosya-> Aç menüsünden açılarak veya Explorer'da dosyaya çift tıklayarak içe aktarılmasına bağlı olarak farklı davranabilir.

UTF-8 kodlamasında olan ve bazı hücrelerde yeni satırlar içeren bir CSV dosyam var. Bu dosyayı Excel'in Dosya-> Aç menüsünden açarsam, "CSV'yi içe aktarma" sihirbazı açılır ve dosya doğru şekilde içe aktarılamaz: yeni satırlar, alıntı yapıldığında bile yeni bir satır başlatır. Bu dosyayı bir Explorer penceresinde üzerine çift tıklayarak açarsam, sihirbazın müdahalesi olmadan doğru bir şekilde açılıyor.


1
Çift tıklamayla aynı ayarları nasıl elde edeceğiniz hakkında bir fikriniz var mı?
Michiel Thalen

7
Bu doğru! Ne kadar garip.
David,

5
Alman bölgesel ayarları kullanıyorsanız, çift tıklamanın çalışması için
csv'nizde

3
Benim için işe yaramadı. Sınırlayıcı olarak "," ile her şeyi çift tıklama ile tek bir sütunda açtı. İle ";" sınırlayıcı olarak, birkaç kayıt olarak içe aktarılan çok satırlı metin alanları dışında doğru bir şekilde içe aktarıldı. Bende Excel 2010 var
Andrej Adamenko

2
@ user1859022 Macar yerel ayarı için bunu ikiye katlıyorum. aslında ondalık ayırıcı olarak virgül kullanan herhangi bir yerel ayarın,
csv'nin

42

Önerilen çözümlerin hiçbiri benim için işe yaramadı.

Gerçekte ne işe yarıyor (herhangi bir kodlamayla):

Csv dosyasından (Editör'de aç) verileri kopyalayıp yapıştırın, ardından "sütunlarda metin" gerçekleştirin -> çalışmıyor, tamam.

Bir sonraki sekmeye gidin ve tekrar kopyalayın / yapıştırın (panonuzda bulunanla aynı şey) -> şimdi otomatik olarak çalışıyor.


2
Benim durumumda bu bir şekilde işe yaradı: CSV'yi tek kayıtlara doğru şekilde daralttı, ancak yeni satırı geçen bir alandaki tüm verileri kaldırdı.
Lilienthal

1
Bu işe yaradı, csv'yi excel'den içe aktarırken neden çalışmadığına dair herhangi bir fikriniz var mı?
Rafael Sisto

1
Bunun çalıştığını doğrulayabilirim, hatta "sütunlara metin" komutunu tekrarlamadan farklı sayfalara daha fazla veri yapıştırabilirsiniz. Birkaç dosyayı içe aktarmanız gerekiyorsa bu yararlıdır.
Alex

1
Bu neden işe yarıyor ama ne CSV'yi açıyor ne de onu tüm uygun ayarlarla Metin Verileri olarak eklemek işe yaramıyor? Bahşiş için teşekkürler. Kopyala / Yapıştır ekibinin veri içe aktarma ekibiyle konuşması gerekiyor!
alexGIS

2
Vay be. bu gerçekten işe yarıyor. ve neden olduğu mantıklı. "Sütunlara metin" oluştururken, Excel ayarları hatırlar ve otomatik olarak dönüşür. Metni zaten satırlara ayırdığınızda, satır satır görünecek ve yeni satırları yok sayacaktır. Bence MS, davranışı korumak veya verileri yeniden taramak için bir onay kutusu içermelidir. Umurumda değil, ...
acayip

29

Bunu manuel olarak yapıyorsanız, LibreOffice'i indirin ve CSV'nizi içe aktarmak için LibreOffice Calc kullanın. Bunun gibi şeyler üzerinde denediğim herhangi bir Excel sürümünden çok daha iyi bir iş çıkarır ve daha sonra Excel'e aktarmanız gerekirse gerektiği şekilde XLS veya XLSX'e kaydedebilir.

Ancak Excel'e bağlıysanız ve daha iyi bir düzeltmeye ihtiyacınız varsa, bir yol var gibi görünüyor. Yere bağlı görünüyor (mütevazı görüşüme göre aptalca görünüyor). Excel 2007'm yok, ancak Excel 2010'um var ve verilen örnek:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

çalışmıyor. Not Defteri'nde yazdım ve Farklı kaydet ... seçeneğini seçtim ve Kaydet düğmesinin yanında kodlamayı seçebilirsiniz. UTF-8'i önerildiği gibi seçtim ama şansım olmadı. Virgülleri noktalı virgülle değiştirmek işime yaradı. Başka hiçbir şeyi değiştirmedim ve sadece işe yaradı. Bu yüzden örneği böyle görünecek şekilde değiştirdim ve Not Defteri'nde kaydederken UTF-8 kodlamasını seçtim:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

Ama bir sorun var! Çalışmasının tek yolu, CSV dosyasını çift tıklatarak Excel'de açmanızdır. Verileri metinden içeri aktarmaya çalışırsam ve bu CSV'yi seçersem, o zaman alıntılanan yeni satırlarda hala başarısız oluyor.

Ama başka bir yakalama var! Çalışma alanı ayırıcısı (orijinal örnekte virgül, benim durumumda noktalı virgül), sistemin Bölgesel Ayarlarına (Denetim Masası -> Bölge ve Dil altında ayarlanır) bağlı görünüyor. Norveç'te ondalık ayırıcı virgüldür. Excel bu karakterden kaçınıyor ve bunun yerine noktalı virgül kullanmayı tercih ediyor. İngiltere İngilizcesi yerel ayarına ayarlanmış başka bir bilgisayara erişimim var ve o bilgisayarda, virgül ayırıcılı ilk örnek iyi çalışıyor (yalnızca çift tıklama ile) ve noktalı virgülle olan gerçekten başarısız oluyor! Birlikte çalışabilirlik için çok fazla. Bu CSV'yi çevrimiçi olarak yayınlamak istiyorsanız ve kullanıcılar Excel'e sahipse, sanırım her iki sürümü de yayınlamanız gerekir ve insanlara hangi dosyanın doğru sayıda satır verdiğini kontrol etmelerini öneririm.

Bu yüzden bunu işe yarayabilmek için toplayabildiğim tüm detaylar:

  1. Dosya, BOM ile UTF-8 olarak kaydedilmelidir, bu da Not Defteri'nin UTF-8'i seçtiğinizde yaptığı şeydir. UTF-8'i BOM olmadan denedim (Notepad ++ ile kolayca değiştirilebilir), ancak ardından belgeyi çift tıklatma başarısız oluyor.
  2. Virgül veya noktalı virgül ayırıcı kullanmalısınız, ancak Bölgesel Ayarlarınızdaki ondalık ayırıcıyı kullanmamalısınız. Belki başka karakterler işe yarar ama hangisi olduğunu bilmiyorum.
  3. "Karakteriyle yeni satır içeren alanları tırnak içine almalısınız.
  4. Windows satır sonlarını (\ r \ n) hem metin alanında hem de kayıt ayırıcı olarak kullandım, bu işe yarıyor.
  5. Açmak için dosyaya çift tıklamalısınız, metinden veri içe aktarmak işe yaramaz.

Umarım bu birine yardımcı olur.


Ayrıca @sdplus'ın bahsettiği numara işe yarıyor gibi görünüyor! Sanırım, ilk yapıştırıp bir "sütunlara metin" manevrası yaptığınızda, Excel'de alıntı ve alan ayırıcı öğelerini yapılandırıyorsunuz. İkinci yapıştırışınızda, bu yapılandırmayı kullanır ve verileri yapılandırmaya göre doğru şekilde sütunlara böler. Ancak bu çok manuel bir yaklaşım gibi görünüyor.
ketil

evet, Metni her İçe aktardığınızda veya bir Metni Sütuna Yaptığınızda, verilen oturumda kopyala / yapıştır işleminin nasıl çalışacağını yeniden kalibre edersiniz. Excel'i kapatana kadar oluşturduğunuz yeni çalışma kitaplarına bile uygulanır. bu da sinir bozucu olabilir. İçe aktarma için belirli bir ayırıcı kullandığınızda, hücreye bir cümle yapıştırmak isteseniz bile, metninizi bununla ayıracaktır. sekmeyi ayırıcı olarak yeniden içe aktarmanız veya durdurmak için Excel'i yeniden başlatmanız gerekir.
robotik

Numaranız gerçekten işe yarıyor gibi görünüyor. Ancak noktalı virgülün çözümle hiçbir ilgisi yok gibi görünüyor. Sorun, Excel'in CSV dosyalarını bölgesel ayarlara bağlı olarak farklı şekilde ele almasıdır. Ben Almanya'danım ve benim için Excel'deki CSV dosyalarında virgül yerine her zaman noktalı virgül var (bunun nedeni, Almanya'da ondalık ayırıcının nokta yerine virgül olmasıdır). Gerçek çözüm, Excel'in CSV dosyalarını diğer tüm metin dosyalarından tamamen farklı yüklemesi gibi görünüyor. Dolayısıyla, alıntılar arasında satır sonları içeren CSV dosyaları çalışıyor gibi görünüyor. Diğer tüm metin dosyaları değil.
Martini Bianco

@Martini, evet, benim Norveç Excel'im var ve ondalık ayırıcı olarak da virgül kullanıyoruz, bu yüzden bunun bölgesel ayarlara nasıl bağlı olduğundan bahsetmiştim (buna yerel ayar olarak değindim). Belki de açıklık için yeniden ifade etmeliyim.
ketil

Bu, virgülün ondalık ayırıcı olduğu bölgelerdeki tüm insanlar için cevaptır . Excel'in bu bölgeler için formül bağımsız değişken ayırıcısı olarak noktalı virgül kullandığını ( =FOO(1;2)yerine =FOO(1,2)) unutmayın, ancak Excel'in bunu bir dosya biçimi ayrıştırıcısına uygulaması yanlıştır (başka program yerel ayara bağlı olarak standart bir dosya biçimini ayrıştırır ??? )
leemes

25

Sonunda sorunu buldum!

Dosyayı ASCII veya UTF-8 yerine Unicode kodlaması kullanarak yazdığımız ortaya çıktı. FileStream'deki kodlamayı değiştirmek sorunu çözüyor gibi görünüyor.

Tüm önerileriniz için herkese teşekkürler!


29
ASCII kodlaması sorunu benim için çözmedi (MacOS'ta olsa) ve önde gelen bir boşluk yok ve alanım alıntılanıyor. Tam olarak aynı belge, Google Dokümanlar'a aktarılır. Ne kadar sinir bozucu. BTW, "Unicode" kodlu metin dosyası diye bir şey yoktur. Unicode (UTF-8, UTF-16, UTF-32, vb.) Uygulamalarından biri olmalıdır
Ben

11
Çözüm için teşekkürler. Hala cevabın ne olduğunu merak ediyordum, bu yüzden Excel'de satır sonu olan bir csv oluşturmayı ve ne kaydettiğini görmeyi denedim. Excel'in bir hücredeki yeni bir satır için yalnızca satır beslemesi kullandığı ortaya çıktı. Not Defteri'nde aynı csv'yi oluşturmaya çalışırsam, satır sonu için satır besleme + satır başı kullanacaktır. Bu nedenle, tek bir hücredeki satır sonları için, satır başı (CR veya \ r) değil, yalnızca satır besleme (LF veya \ n) kullandığından emin olun. Excel, bir satırı sonlandırmak için her ikisini de kullanır.
xr280xr

1
ASCII kodlaması da sorunu benim için çözmedi - Excel 2000, Windows 7.
ChrisJJ

1
Macintosh'ta OS X için, "Windows Virgülle Ayrılmış (csv)" olarak kaydedin. Bu, satır sonları yerine yeni satırlar ekler. "Özel Biçimler" altındaki biçimler için açılır menüde listelenecektir.
taco

Hangi Unicode kodlaması kullanılmalıdır (UTF-8, UTF-16)?
Andrej Adamenko

7

Kısa cevap

Yeni satır / satır besleme karakterlerini kaldırın ( \nNotepad ++ ile). Excel yine de \rkayıtları ayırmak için satırbaşı karakterini ( ) tanıyacaktır .

Uzun cevap

Belirtildiği gibi, satırsonu karakterleri CSV alanlarında desteklenir, ancak Excel bunları her zaman özenle işlemez. Muhtemelen kodlama sorunları olan ancak kodlama değişiklikleriyle düzelmeyen üçüncü taraf bir CSV ile benzer bir sorunla karşılaştım.

Benim için işe yarayan, tüm satırsonu karakterlerini ( \n) kaldırmaktı . Bu, kayıtlarınızın bir satır başı ve bir satırsonu (CR / LF) kombinasyonuyla ayrıldığını varsayarak alanları tek bir kayda daraltma etkisine sahiptir. Excel daha sonra dosyayı düzgün bir şekilde içe aktaracak ve yeni kayıtları satır başı ile tanıyacaktır.

Açıkçası daha temiz bir çözüm, ilk önce gerçek yeni satırları ( \r\n) geçici bir karakter kombinasyonu ile değiştirmek, yeni satırları ( \n) kendi ayırıcı karakterinizle (örneğin, noktalı virgül dosyasında virgül) değiştirmek ve ardından geçici karakterleri tekrar uygun yeni satırlarla değiştirmektir.


1
Tam tersi bir durum yaşadım: \nsatırlar arası ve \r\niç değerler. İkincisi Notepad ++ ile kaldırıldı.
Rarst

5

J Ashley'nin yorumunda +1. Ben de bu problemle karşılaştım. Excel'in şunları gerektirdiği ortaya çıktı:

  • Alıntılanan dizede bir yeni satır karakteri ("\ n")

  • Her satır arasında bir satır başı ve satırsonu.

Örneğin "Test", "Çok satırlı öğe \ n çok satırlı öğe" \ r \ n "Test2", "Çok satırlı öğe \ n çok satırlı öğe" \ r \ n

Her satırı doğru bir şekilde sınırlandırmak ve dizede yalnızca yeni satırları kullanmak için notepad ++ kullandım. Bunu, boş bir excel belgesinde çok satırlı girişler oluşturarak ve csv'yi notepad ++ ile açarak keşfetti.


hem çok satırlı öğe hem de satır ayırıcı olarak yalnızca satırsonu karakteri ile çalıştı, alan ayırıcısını yerel
ayarıma

4

Alan önde gelen bir boşluk içeriyorsa, Excel çift tırnağı metin niteleyici olarak yok sayar. Çözüm, virgül (alan ayırıcı) ve çift tırnak arasındaki öndeki boşlukları ortadan kaldırmaktır. Örneğin:

Kırık:
Ad, Başlık, Açıklama
"John", "Bay", "Ayrıntılı açıklamam"

Çalışma:
Ad, Başlık, Açıklama
"John", "Bay", "Ayrıntılı açıklamam"


2
Kabul ediyorum, ancak çıktımda herhangi bir öncü boşluk yok. Herhangi bir fikir?
jeremyalan

kırılmış çizgiye ihtiyacımız var :(
Luke

4

Google E-Tablolar'ı kullanın ve CSV dosyasını içe aktarın.

Sonra bunu Excel'de kullanmak üzere dışa aktarabilirsiniz


1
İyi bahşiş! CSV'nizi bir üçüncü taraf hizmetine yüklemekte sorun yoksa (yani gizli olmayan veriler) bu en uygun dönüştürme yöntemidir. Sınırlayıcıyı içe aktarırken manuel olarak ayarlamanız gerekebileceğini unutmayın. Ve doğru şekilde görüntülenmesi için elde edilen Excel dosyasında hücre boyutunu ayarlamanız gerekebilir.
m000

Ayrıca bir tarayıcıda Office 365'teki Excel ile çalışır. Masaüstü Excel uygulamasıyla hücrelerin içinde satır sonları olan bir CSV'yi düzgün bir şekilde açamadım (bu sayfadaki önerilerin çoğunu deniyorum), ancak office.com'daki Excel onu düzgün bir şekilde açabilir.
georg w.

3

Bu konuya rastlayan ve kesin bir cevap arayan biri burada gider (LibreOffice'den bahseden kişiye kredi:

1) LibreOffice'i kurun 2) Calc dosyasını açın ve içe aktarın 3) txt dosyamda "ile ayrılmış alanlar ve karakter alanları" 4) ODS dosyası olarak kaydedin 5) ODS dosyasını Excel'de açın 6) .xls olarak kaydedin (x) 7) Bitti 8) Bu benim için mükemmel çalıştı ve BÜYÜK ZAMAN kurtardı!


3
Gerek doğal LibreOffice xls (x) kaydedebilir, ODS olarak kaydetmek için
robotik

2

Notepad ++ 'a yapıştırın, Kodlama> ANSI'de Kodla'yı seçin, hepsini tekrar kopyalayın ve Excel'e yapıştırın :)


2

Ben de benzer bir sorun yaşadım. MySQL'de bazı twitter verileri vardı. Veriler, verilerle birlikte Satır besleme (LF veya \ n) içeriyordu. MySQL verilerini excel'e aktarma zorunluluğum vardı. LF, csv dosyası içe aktarmamı karıştırıyordu. Ben de aşağıdakileri yaptım -

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

NOT- CRLF veya LF'yi değiştirirken Hariç Tutulanları Kontrol Etmeyi unutmayın (\ n, \ r, \ t ... Onay Kutusu [İletişim Kutusunun sol alt tarafına bakın)


2

Fransız bölgesel ayarlarıyla WinXP üzerinde Excel 2010 deneyimim

  • içe aktarılan csv'nizin ayırıcısı, bölgesel ayarlarınızın liste ayırıcısına karşılık gelmelidir (benim durumumda)
  • Gezginden dosyaya çift tıklamalısınız. Excel'den açma

1

CSV'lerle uğraşırken Excel inanılmaz derecede bozuk. LibreOffice çok daha iyi bir iş çıkarır. Böylece şunu öğrendim:

  • Dosya, BOM ile UTF-8 olarak kodlanmalıdır, bu nedenle aşağıdaki tüm noktalar için bunu dikkate alın
  • Şimdiye kadarki en iyi sonuç, onu Dosya Gezgini'nden açarak elde edilir.
  • Excel'in içinden açarsanız, iki olası sonuç vardır:
    • Yalnızca ASCII karakterleri varsa, büyük olasılıkla çalışacaktır
    • ASCII olmayan karakterler içeriyorsa, satır sonlarınızı bozar
  • İşletim sisteminin bölgesel ayarlarında yapılandırılan ondalık ayırıcıya büyük ölçüde bağımlı görünüyor, bu nedenle doğru olanı seçmeniz gerekiyor
  • Bahse girerim işletim sistemi ve Office sürümüne bağlı olarak farklı davranabilir.

LibreOffice'in Excel'den daha iyi bir tahminci olduğunu iddia ediyorsunuz , değil mi? Excel, siz tahmin etmesini söylemediğiniz sürece metin dosyalarını içe aktarırken tüm doğru soruları sorar.
Tom Blodget

1
Teşekkür ederim! Notepad ++ ile CSV'mi "BOM olmadan UTF-8" den "BOM ile UTF-8" e (menüde sadece basit "UTF-8") dönüştürmeme yardımcı oluyor. Sonra onu Explorer'dan açtım ve Excel bunu doğru sembollerle ve hücrelerin içindeki doğru satır sonlarıyla doğru şekilde gösterdi. Explorer Excel'den varsayılan "BOM olmadan UTF-8" kodlamasında açtığımda, içe aktarılan satır doğru şekilde kesiliyor, ancak latin olmayan sembolleri yanlış şekilde görüntülüyor. Excel'den açarsam, doğru şekilde kodlamayı gösterdi, ancak satır sonlarıyla baş edemedi.
Sergey Beloglazov

1

genel bakış

Orijinal gönderiden neredeyse 10 yıl sonra Excel, CSV dosyalarını içe aktarmada ilerleme kaydetmedi. Ancak, HTML tablolarını içe aktarmanın çok daha iyi olduğunu buldum. Dolayısıyla, CSV'yi HTML'ye dönüştürmek ve ardından ortaya çıkan HTML'yi Excel'e aktarmak için Python kullanılabilir.

Bu yaklaşımın avantajları şunlardır: (a) güvenilir bir şekilde çalışır, (b) verilerinizi üçüncü taraf bir hizmete göndermeniz gerekmez (ör. Google sayfaları), (c) ekstra "katı" kurulum gerekmez (LibreOffice, Sayılar vb.) Çoğu kullanıcı için, (d) CR / LF karakterleri ve BOM işaretçileriyle uğraşmaktan daha yüksek düzeyde, (e) yerel ayarlarla uğraşmaya gerek yok.

adımlar

Aşağıdaki adımlar, Python 3 kurulu olduğu sürece herhangi bir bash benzeri kabukta çalıştırılabilir. Python, CSV'yi doğrudan okumak için kullanılabilse de, csvkit , JSON'a bir ara dönüştürme yapmak için kullanılır. Bu, Python kodumuzdaki CSV karmaşıklıkları ile uğraşmaktan kaçınmamızı sağlar.

İlk önce aşağıdaki komut dosyasını kaydedin json2html.py. Komut dosyası, stdin'den bir JSON dosyasını okur ve bunu bir HTML tablosu olarak döker:

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

Ardından, sanal bir ortama csvkit kurun csvjsonve girdi dosyasını betiğimize beslemek için kullanın . Bağımsız -Ideğişkenle hücre türü tahminini devre dışı bırakmak iyi bir fikirdir :

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

Artık output.htmlExcel'de içe aktarılabilir. Hücrelerdeki satır sonları korunmuş olacaktır.

İsteğe bağlı olarak, Python sanal ortamınızı temizlemek isteyebilirsiniz:

$ deactivate
$ rm -rf pyenv

1

Bu Excel 2016 içindir:

Excel Sihirbazı ile bir csv dosyası içindeki satır sonlarında aynı sorunu yaşadım.

Daha sonra "Yeni Sorgu" Özelliği ile deniyordum: Veri -> Yeni Sorgu -> Dosyadan -> CSV'den -> Dosyayı Seç -> İçe Aktar -> Yükle

Mükemmel çalışıyordu ve aynı sorunu yaşayan hepiniz için çok hızlı bir çözümdü.


0

Benim için işe yarayan şey, içe aktarmanın csv formatı yerine metin formatı olarak yapılması şartıyla doğrudan Excel'e içe aktarmak. M /


0

satır sonu içeren hücrelerle yeni bir sayfa oluşturun, csv'ye kaydedin ve ardından satır sonunu gösterebilen bir düzenleyiciyle açın (notepad ++ gibi). Bunu yaparak, bir hücredeki satır kırılmasının LF ile kodlandığını, satırın "gerçek" sonunun ise CR LF ile kodlandığını fark edeceksiniz. Voilà, artık excel için "doğru" bir csv dosyasını nasıl oluşturacağınızı biliyorsunuz.


0

Ben de şu problemi yaşadım: örn., Alıntılanmış dizelerde LF ile csv dosyaları (virgülle ayrılmış, çift tırnakla sınırlanmış dizeler). Bunlar, Square dosyaları indirildi. Bir veri içe aktarımı yaptım, ancak metin dosyaları olarak içe aktarmak yerine, "HTML'den" içe aktarıldı. Bu sefer alıntı dizelerdeki LF'leri görmezden geldi.


0

Bu, Mac'te csv kullanarak ve dosyayı Excel'de açarak çalıştı.

Csv dosyasını yazmak için python kullanma.

data = '"a1 hücresinin ilk satırı \ r a1 hücresindeki 2. satır a1 hücresindeki 3. satır", "hücre b1", "c1 hücresindeki 1. satır \ r c1 hücresindeki 2. satır" \ n "ilk satır a2 hücresi "\ n '

file.write (veri)


0

MacOS'ta Numbers kullanmayı deneyin

Mac OS'ye erişiminiz varsa, Apple hesap tablosu Numbers'ın Excel'in işleyemediği karmaşık bir çok satırlı CSV dosyasının seçimini kaldırmak için iyi bir iş çıkardığını gördüm. Sadece .csvNumbers ile açın ve ardından Excel'e aktarın.


0

Benim durumumda CSV'yi notepad ++ ile SEP=","açmak ve ilk satır olarak eklemek CSV'yi satır sonları ile açmama ve Excel'de utf-8'i sorunsuz bir şekilde açmama izin veriyor


0

Ayırıcıyı virgül (,) yerine TAB (\ t) ile değiştirin. Ardından dosyayı düzenleyicinizde (Not Defteri vb.) Açın, içeriği oradan kopyalayın ve ardından Excel dosyasına yapıştırın.


Bunu büyük dosyalarda deneyin :)
chukko

-1

Çift tırnak içindeki satır sonları, CSV standardına göre mükemmel derecede iyidir. Excel'de satır sonlarının ayrıştırılması, liste ayırıcının işletim sistemi ayarına bağlıdır:

  1. Windows: liste ayırıcısını virgül olarak ayarlamanız gerekir (Bölge ve dil »Biçimler» Gelişmiş) Kaynak: /superuser/238944/how-to-force-excel-to-open-csv-files- ile-data-düzenlenmiş-in-sütunlarda # cevap-633302

  2. Mac: Bölgeyi ABD olarak değiştirmeniz gerekir (daha sonra diğer ayarları tercihinize göre manuel olarak değiştirmek için) Kaynak: https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macexcel/line-separator-comma -semicolon-in-excel-2016-for / 7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (NewmanLee'nin cevabına bakın)

Tekrar denemeden önce Excel'i tamamen kapatmayı unutmayın.

Sorunu başarıyla kopyaladım ve hem Max hem de Windows'ta yukarıdakileri kullanarak düzeltmeyi başardım.


Bunun işe yaradığını sanmıyorum. Excel'in kendisinden hücrelerde satır sonları olan bir CSV'yi dışa aktardım. Yerel ayar değişmediğinden, Excel bunu doğru bir şekilde yükleyebiliyor olmalıydı. Ama olamaz. Hala hücrelerdeki satır sonlarıyla uğraşıyor.
m000
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.