it-swarm.com.de

Befehlszeilenprogramm zum Anzeigen von XLS-Dateien

Gibt es ein Befehlszeilentool zum Anzeigen/Öffnen von Excel-Dateien (.xls)?

Die Antwort funktioniert also hervorragend, es sei denn, die Arbeitsblätter haben keinen benutzerdefinierten Namen.

Wenn ich versuche, die Datei zu öffnen, erhalte ich:

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.

Wenn ich jedoch die Datei öffne und das Blatt in "Test" oder etwas anderes umbenenne, funktioniert es einwandfrei. Was muss ich tun, um die Standardnamen zu bearbeiten? (Sheet1, etc)

Die Datei, die ich derzeit zu öffnen versuche, hat nur 1 Blatt mit dem Namen Sheet1.

26
David Oneill

Ja, es ist ein bisschen abgedreht. Beginnen wir mit der Installation von zwei Paketen:

Sudo apt-get install python-excelerator w3m

Von dort aus verwenden wir ein Skript, das zusammen mit python-excelerator geliefert wird, um das Dokument in eine HTML-Datei zu konvertieren. Wir leiten das dann in einen Kommandozeilen-Browser (w3m) und zeigen es an.

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

Sie können damit eine Bash-Funktion oder einen Alias ​​erstellen, wenn Sie die Eingabe nicht fortsetzen möchten. Es sollte folgende Ausgabe geben:

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

Sehr hübsch. Offensichtlich wird dies keine Art von Makro, Bearbeitung oder Interaktivität unterstützen. Dies ist nur ein Betrachter. Sie könnten auch daran arbeiten, die Anführungszeichen, die die Dinge umschließen, zu entfernen. Sie stören mich an dieser Stelle nicht sonderlich.

Wenn es nicht so tabellarisch sein soll, können Sie einfach so etwas haben:

py_xls2csv spreadsheet.xls 2>&1 | less

Sie können noch einen Schritt weiter gehen und ihn auf eine etwas schönere Weise anzeigen:

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

Das gibt Ihnen Folgendes:

  1 this   is    a       spreadsheet
  2 it     is    very    Nice
  3 this   has   three   rows
21
Oli

Hier ist eine Methode, die die Unicode-Zeichen verwaltet.
dh. es zeigt an, anstatt den Unicode-Codepoint-Wert \U0906 zu verschieben

Das Skript verwendet OpenOffice.org und PyODConverter.py , um ein OOo Dokumentformat in ein anderes OOo Format zu konvertieren. Die Konvertierungstypen basieren auf den Dateinamenerweiterungen:

  • pdf html odt doc txt ods xls csv odp 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
#

Es gibt wahrscheinlich eine andere Möglichkeit, OOo zu beenden (aber ich weiß es nicht)
Und es gibt wahrscheinlich auch eine Möglichkeit, eine unabhängige Instanz von OOo zu starten, aber ich weiß auch nicht, wie ich das machen soll, so wie es ist, erfordert es das OOo läuft nicht ...

1
Peter.O