Alıntılanan sayı dizelerini dize değil sayısal değerler olarak ele alan Excel CSV içe aktarma


13

Verilerini CSV dosyasına aktaran bir web uygulamam var. Söz konusu CSV dosyasının örnek bir satırı:

28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"

Bir resim gönderemediğim için sonuçları Excel'de açıklamam gerekecek. "0316295" alanı bir sayıya dönüştürülür ve baştaki 0 ​​gider. "8316012,8315844" tek bir sayı olarak yorumlanır: 83,160,128,315,844. Bu, açıkçası, amaçlanan sonuç değildir.

İnsanların bu tür durumlar için tek bir teklif önerdiğini gördüm, ancak bu da işe yaramıyor.

28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"

Tek tırnak, Excel'deki hücrede her zaman görünür, ancak kendim için önde gelen tek bir tırnak içeren bir sayı girersem, dize ile tek tırnak değil, yalnızca istenen dizeyi gösterir.

İçe aktarma yazmakla aynı şey değildir.

Burada çözüm olan var mı?


LibreOffice veya bu ilk şeyden birini kullanarak içe aktarabiliyor musunuz? Sadece ithal ve var: 28 65154 2013/02/21 00:00 false 0316295 8316012,8315844 MALE (bunu okuyabiliyorsanız ...?)
parapraksis

Bu soru benzer ve bazı iyi çözümler sunuyor: superuser.com/questions/234997/…
Brad Patton

@FreudianSlip Hayır, bazı üçüncü taraf çözümlerini kullanamayız. Kullanıcılar "CSV indir" düğmesini tıklar ve dosya Excel'de açılır. Karşılaştığımız ortam bu. Gerçekten karmaşık olamaz.
Michael Oryl

@Brad Daha önce çözüm arayan bu yazıyı okudum. Excel'den CSV'den içe aktarıldığında (aynı şeyi kendinize yazarsanız göstermeseniz bile) alıntıyı hücrenin kendisinde gösterdiği için gerçekten sevmediğim tek teklif seçeneğini aldım.
Michael Oryl

en azından web uygulamasını kontrol ediyor musunuz? çözümü kullanıcılardan şeffaf bir şekilde nasıl uygulayacaksınız? Cevabımı güncelledim, böylece değerleri virgülle düzgün şekilde işleyecek
Alex P.

Yanıtlar:


10

Bu çalışmalı

28,"65154",02/21/2013 00:00,"false",="0316295","=""8316012,8315844""","MALE"

Hayır, değeri iki sayı ile değiştirir. Kapanış teklifi olmadan = "1234567 olsun. Daha basit sayılar için çalışıyor.
Michael Oryl

1
web uygulamasını kontrol ederseniz dışa aktarmayı SYLK en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK) biçiminde uygulayabilirsiniz . veri gösterimi üzerinde çok daha iyi bir kontrole sahiptir. değilse - kolayca bir dönüştürücü komut dosyası yapabilirsiniz
Alex P.

2
cevabı güncelledi, böylece değerleri virgülle düzgün şekilde işleyecekti
Alex P.

Bu, virgülle ayrılmış değerleri düzgün şekilde ele aldı. Teşekkürler.
Michael Oryl

Teşekkürler. Bu çözüm, onaltılık sayıların da içe aktarılmasıyla ilgili bir sorunu çözdü. Excel 00E30 (0 * 10 ^ 3) ile değiştirilir ve bunu bilim notasyonu (0.00E + 00) olarak görüntüler. Aslında aynı şey "00e3"olmadan =. Ama ="00e3"mükemmel çalışıyor. (Excel 2010 ile bir CSV açılması)
mpag

12

Baştaki sıfır (lar) ı korumak için, Metin Alma Sihirbazı'nda söz konusu sütunun biçimini Metin olarak ayarlayabilirsiniz.

  1. Başlangıç Metin Alma Sihirbazı giderek Veri sekmesi & tıklayarak Metin itibaren .
  2. Almak istediğiniz CSV dosyasını seçin.
  3. Sınırlandırılmış'ı seçin ve İleri'ye basın .
  4. Sekme işaretini kaldırın (varsayılan). Virgül'ü seçin . Metin Niteleyici'nin olarak ayarlandığından emin olun ". Hit İleri .
  5. Biçimleri belirtebileceğiniz yer burasıdır . Baştaki sıfır (lar) ını korumak istediğiniz sütunun başlığını tıklayın. Metin'i seçin . (Aşağıdaki resme bakın)

    resim açıklamasını buraya girin

  6. Hit Finish & sonra verileriniz için uygun bir yer seçin. Örnek sonuç:

    resim açıklamasını buraya girin

Düzenleme : Başka bir yolu var ; web uygulamasının .CSV yerine virgülle ayrılmış bir .TXT dosyasına dışa aktarılmasını sağlayın (veya dışa aktarılan dosyanın kaydedildikten sonra dosya uzantısını değiştirin). Bu, Excel'i dosyayı açtıklarında alma sihirbazından geçmeye zorlar. Ek bir avantaj olarak, kullanıcıların orijinal ham verilerinizi değiştirme veya kurcalama şansını azaltır.


1
Evet, kesinlikle doğru. Karşılaştırma yapmak zorunda oldukları tek şey, web uygulamamızdaki CSV jeneratörünün bağlantısına tıklamak ve Excel yukarıda belirtilen sorunlara rağmen otomatik olarak yüklediğinde son kullanıcı için gerçekten uygun değildir. CSV dosyaları Excel'de açılacak şekilde ayarlanmıştır ve Excel şu anda herhangi bir seçenek sunmamaktadır. Sadece yükler. Yine de bunu belirttiğiniz için teşekkür ederim.
Michael Oryl

1
Başka bir yol var, ancak sizin durumunuzda mümkün olup olmadığını bilmiyorum: web uygulaması dışa aktarma .TXTyerine virgülle ayrılmış .CSV(veya dışa aktarılan dosyanın dosya uzantısını değiştirin). Bu tür "kullanıcıları" dosyayı açtıklarında içe aktarma sihirbazından geçmeye zorlar.
Ellesa

Bu çok iyi bir nokta. Bunu işaret ettiğiniz için teşekkürler. Gelecekte faydalı olabilir.
Michael Oryl

4

Excel, sekme karakteriyle başlayan sayısal değerleri metin olarak kabul eder.

<tabchar>000000100000200000,ABC,DEF

Olarak görünecek:

000000100000200000|ABC|DEF

| hücre sınırıdır (gösterim amacıyla). Örneğin, sisteminiz CSV dosyasını utf-8 karakter kümesi kullanarak oluşturuyorsa, excel'i &#x0009;metin olarak yorumlamaya zorlamak için sayısal değerinizin önüne (Onaltılı Sekme Tablosu) ekleyebilirsiniz .


Onaltılı gösterimde yarım kolondan önce boşluğu kaldırın. Cevabında Hex Tab karakterinden kaçmayı bilmiyorum, bu yüzden kasten yanlış yazdım.
Madeyedexter

1
Kaçmayı ben yaptım. Ve yeni bir şey öğrendim, teşekkürler. Bunu iş için en sevdiğim konuya eklemek zorundayım :)
nixda

3

CSV sütunu bu biçimde değilse, Excel bir CSV alanının biçimini otomatik olarak algılar:

"=""Data Here"""

Bu, Google sayfaları için de geçerlidir


0

Metin olarak görüntülenmesini sağlamak için Excel'deki "Veri -> Dış Veri Al -> Dosyadan Metin Al" işlevini kullanmanız gerekir. @Kaze'de belirtilen metin içe aktarma sihirbazıdır.

Kullanıcıyı herhangi bir şey yapmak zorunda kalmadan excel'i girişten metin olarak göstermeye zorlamanın tek yolu, bir excel dosyası çıktılamak ve içinde bir "özel sayı biçimi" belirtmektir. Bunun için bir XLS dışa aktarma kitaplığı kullanmanızı öneririm, çünkü bir CSV dosyasına bir yapılandırma satırı satırı eklemek kadar basit görünmüyor.


0

dağınık değerler için temizleme fonksiyonunu deneyin. Örneğin = temiz ("12345678901234567890"). Sayılar, tarihler, saatler, vb. İçin benim için çalışır. Çünkü bu fonksiyonun amacı bu yeni sürümlerle çalışmayı durduramayabilir.

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.