Xls dosyalarını görüntülemek için komut satırı aracı


27

Excel (.xls) dosyalarını görüntülemek / açmak için bir komut satırı aracı var mı?

Bu nedenle, çalışma sayfalarının özel bir adı olmadıkça yanıt mükemmel çalışır.

Dosyayı açmaya çalıştığımda şunu alıyorum:

Traceback (most recent call last):
  File "/usr/bin/py_xls2csv", line 17, in <module>
    for sheet_name, values in parse_xls(arg, 'cp1251'): # parse_xls(arg) -- default encoding
  File "/usr/lib/python2.5/site-packages/pyExcelerator/ImportXLS.py", line 334, in parse_xls
    raise Exception, 'No workbook stream in file.'
Exception: No workbook stream in file.

Ancak, dosyayı açıp 'test' etmek için sayfayı yeniden adlandırırsam ya da düzgün çalıştıysa. Varsayılan isimleri kullanabilmesi için ince ayarlamalar yapmam gerekir? (Sayfa1, vb)

Şu anda açmaya çalıştığım dosyada Sayfa1 adında yalnızca 1 sayfa var.

Yanıtlar:


22

Evet, yine de biraz sahte. İki paket yükleyerek başlayalım:

sudo apt-get install python-excelerator w3m

Oradan python-excelerator, belgeyi bir HTML dosyasına dönüştürmek için birlikte gelen bir komut dosyası kullanıyoruz. Daha sonra bunu bir komut satırı tarayıcısına ( w3m) aktarıp görüntüleriz.

py_xls2html spreadsheet.xls 2>/dev/null | sed 's/"//g' | w3m -dump -T 'text/html'

Yazmaya devam etmek istemiyorsanız bir bash işlevi veya bununla bir diğer ad oluşturabilirsiniz. Size bu şekilde çıktı vermelidir:

Sheet = Sheet1
┏━━━━┯━━━┯━━━━━┯━━━━━━━━━━━━┓
┃this│is │a    │spreadsheet ┃
┠────┼───┼─────┼────────────┨
┃it  │is │very │nice        ┃
┠────┼───┼─────┼────────────┨
┃this│has│three│rows        ┃
┗━━━━┷━━━┷━━━━━┷━━━━━━━━━━━━┛
Sheet = Sheet2 Sheet = Sheet3

Çok pretteh. Açıkçası bu, herhangi bir makroyu, düzenlemeyi veya herhangi bir etkileşimi desteklemeyecek. Bu tamamen bir izleyici. Ayrıca işleri saran tırnak işaretlerini çıkarmak için de çalışabilirsiniz. Bu noktada özellikle onlar tarafından rahatsız değilim.

Tablo gibi olması gerekmiyorsa, basitçe böyle bir şey olabilir:

py_xls2csv spreadsheet.xls 2>&1 | less

Bundan daha ileri gidebilir ve daha güzel bir şekilde görüntüleyebilirsiniz:

py_xls2csv spreadsheet.xls 2>&1 | grep '^"' | sed 's/"//g' | column -s, -t | less -#2 -N -S

Bu size aşağıdakileri verir:

  1 this   is    a       spreadsheet
  2 it     is    very    nice
  3 this   has   three   rows

Düz metin dosyasına dökmek için: links -dump /tmp/tempspreadsheet.html ..... Ayrıca: olduğu gibi, Unicode karakterlerini \u0950biçiminde yazdırır ... Belki de Unicode karakterini üretmek için çıktıyı işlemenin bir yolu vardır ... basit "şekilde görmek isterdim ...
Peter.O

@ fred şimdiye kadar değiştirdim w3m(çünkü daha hoş görünüyor) ve bazı karakter seçeneklerine sahip (bkz. w3m --help). Ayrıca, bir dosyaya aktarma ihtiyacını nükleer bombalama da dahil olmak üzere uzunluğu kısaltdım.
Oli

Müthiş! Bu, çoğu durumda işe yarar: Sorunun 2. bölümünde ana gönderiye düzenleme konusuna bakın (Buradaki yorumları bir yorumdan daha kolay hale getirir)
David Oneill

py_xls2csvile işe sert kodlanmıştır kod sayfası cp1251 .. ben 3 örneğini yerine tespit ettik cp1251ile utf-8giderir unicode karakterleri görüntülenmemesidir 'sorunu" ... Ben o spreadsheed içinde ne olduğuna bağlı varsayalım. ama kullanan utf-8 benim için çalıştı ... (cevabımı gönderene kadar bunu fark etmedim, ancak diğer dönüşümler için yararlı olabilir)
Peter.O

Gecikmeli bir yorum ... Bunu, bir csv metin dosyasını (önce xls'ye dönüştürerek) sıralamak için kullanmayı denedim .. ve oluşturulan htmlbirden fazla boşluk bıraksa da, oluşturulan çıktı bunları tek bir boşluk olarak gösterir (tipik olarak html). yani .. .. <td> cows         moo </td>görüntüler cows moo... Muhtemelen bunun için basit bir ince ayar var, ancak benim html bilgim html'yi heceleyemekten çok fazla ileri gitmiyor .. :)
Peter.O

1

Unicode karakterleri koruyan bir yöntem.
yani. Unicode Kod Noktası değerini kaldırmak yerine görüntülenir\U0906

Betik, bir OOo belge formatını diğer OOo formatına dönüştürmek için OpenOffice.org ve PyODConverter.py yazılımını kullanır . Dönüşüm türleri, dosya adı uzantılarına dayanır:

  • pdf html ve odt doc txt ods xls csv ya da ppt swf

#
oextn="html" # output type
ifile="My_OOo_File"   ;echo ifile="$ifile"
ofile="$ifile.$oextn" ;echo ofile="$ofile"
[[ -f "$ofile" ]] && { rm "$ofile"; }
[[ -f "$ofile" ]] && { echo "A pre-existing Output file was NOT removed" ;exit; } 
#
sofport=8100
soffice="$(locate -br "^soffice.bin$")"
soffarg=( '-invisible' '-accept=socket,port='$sofport';urp;' )
soffrex="$soffice ${soffarg[@]}"
#
  soffpid=$(($(pgrep -f -n "$soffice")))
((soffpid!=0)) && { echo "A OpenOffice is already running. PID=$soffpid" ;exit; } 
#
# Start OpenOffice
"$soffice" "${soffarg[@]}" &
soffpid=$(($(pgrep -f -n "$soffrex")))
((soffpid== 0)) && { echo "A OpenOffice has not started yet=$soffpid" ;exit; } 
#
# Start OpenOffice
echo "** Attempting to connect to OpenOffice.org on port $sofport"
x=1; while ((x!=0)) ;do
    /usr/bin/python "$(which DocumentConverter.py)" "$ifile" "$ofile"
    x=$?
done
#
# Start Terminal Browser
w3m   "$ofile" -T 'text/html'
kill -15 $soffpid
#

Muhtemelen OOo'dan çıkmak için başka bir yol var (ama bilmiyorum)
Ve muhtemelen OOo'nun bağımsız bir örneğini başlatmanın da bir yolu vardır, ama bunun nasıl yapıldığını da bilmiyorum. OOo'nun çalışmamasını gerektirir ...

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.