LibreOffice, komut satırını kullanarak dışa aktarma sırasında baştaki sıfırları nasıl tutabilirim?


3

İsteğe bağlı gelen elektronik tablo dosyalarını rasgele gelen CSV dosyalarına dönüştürmek için Ubuntu 15.10 liman işçisi konteynerinde LibreOffice 5.0.5.2 kullanıyorum:

/usr/lib/libreoffice/program/soffice.bin \
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1,1/2/2/2/3/2,1031,true,false,true' \
    --outdir '/tmp/outgoing' \
    'incoming.csv'

Belgeleri anladığım gibi , bu komut satırı aşağıdakileri kullanarak, elektronik tabloları güvenle bir CSV'ye dönüştürmelidir:

  • , alan ayırıcı olarak ("44")
  • " bir muhafaza karakteri olarak ("34")
  • Gelen kodlama olarak UTF-8 ("76")
  • dosyadaki ilk satırla başla ("1")
  • 1, 2 ve 3 sütunlarını metin olarak biçimlendirin ("1/2/2/2/3/2"),
  • UTF-8'in giden kodlaması var ("1031") kullanın
  • tüm metin hücrelerini alıntıla ("true")
  • özel sayılar tespit etmeyin ("yanlış")
  • hücre içeriğini gösterildiği gibi kaydet ("true")

Bu, başta sıfır bulunan bir metni içeren sütunlar dışında iyi çalışır. Örneğin, eğer öyleyse incoming.csv:

"0123456789"

Ortaya çıkan verilen dosya şudur:

123456789

Anladığım kadarıyla, sütun içe aktarma sırasında metin olarak işaretlenmişse , baştaki sıfırları koruyacak ve sonra diğer yöne giderse, dışa aktarmadaki "tüm metin hücrelerini alıntıla" işaretinin bu korunmuş sıfırları tutacağıdır. Ancak, bazı girdiler için durum böyle görünmüyor.

Örneğin, bunlar nümerik olmayan karakterler içerdiklerinden dolayı varsayılan sıfırlarını korurlar:

  • 0x3E
  • 0 123 456

Komut satırını kullanarak, ihracat sırasındaki sıfırları korumak için LibreOffice'i nasıl yönlendiririm?

Yanıtlar:


2

Sonunda, bir araya getirmeme yardım eden üç kaynak buldum:

  1. https://stackoverflow.com/a/30465397/2908724
  2. https://bugs.documentfoundation.org/show_bug.cgi?id=36313
  3. https://unix.stackexchange.com/a/259434/50240

Yukarıdaki --infilterkomutumdaki eksiklik, LibreOffice'e ithalat ayarlarında talimat veren şey . --convert-toBayrak sadece belirten ihracat ayarları.

Bu komut tüm test durumlarında baştaki sıfırları tamamen korur. Büyü, true"tüm metin hücrelerini alıntıla" anlamına gelen ve içe aktarma iletişim kutusundaki aynı adın onay kutusuna eşdeğer olan terminaldir .

/usr/lib/libreoffice/program/soffice.bin \
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1' \
    --infilter='CSV:44,34,76,1,,1031,true' \
    --outdir '/tmp/outgoing' 'incoming.csv'

Bir yan not olarak, argüman sırası hususlar: --outdirHer iki uymalı --infilterve --convert-to.

Ayrıca, --infilterizin verilen belirli kombinasyonları ve ayarları bildirmek için çoklu belirtilmiş gibi görünüyor .


Ödül verdiğin için sevinmedin mi? :-) Açıklamanızla ilgili bir soru: Metin zaten alıntılanmış gibi görünüyordu; Mesele, temel olarak her değerden alıntı yapmaktı, böylece sayı dizeleri metin olarak değerlendirildi. 'Sihir terminalidir, yani "tüm metin hücrelerini alıntıla" anlamına gelir.' Sorunun neden çözüldüğünü anlamakta güçlük çekiyorum, çünkü sorun değerleri gerçek anlamda metin değildi, bu da temel mesele.
fixer1234

1
@ fixer1234 Anladığım kadarıyla "tüm metin hücrelerini alıntıla", normal olarak hücre içeriğini algılamak ve onu görüntülemek üzere biçimlendirmek için yapılan buluşsal özdeyişi devre dışı bırakır. Kullanıcı arabiriminde, bu etkiye sahip gibi görünen uygun bir onay kutusu vardır. Bu bağlamda "alıntı" kelimesinin bir araya gelmesi kesinlikle kafa karıştırıcıdır.
Piskopos
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.