Инструмент Commandline для просмотра xls файлы

Существует ли инструмент командной строки для просмотра/открытия Excel (.xls) файлы?

Таким образом, ответ работает отлично, если рабочие листы не имеют пользовательского имени.

Когда я пытаюсь открыть файл, я добираюсь:

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.

Однако, если я открываю файл и переименовываю лист, чтобы 'протестировать' или что-то, что он хорошо работает. Что я должен настроить так, чтобы это могло обработать имена по умолчанию? (Sheet1, и т.д.)

Файл, который я пытаюсь открыть в настоящее время, имеет только 1 лист, названный Sheet1.

27
задан 6 July 2014 в 19:55

2 ответа

Да это - немного hacky все же. Давайте запустимся путем установки двух пакетов:

sudo apt-get install python-excelerator w3m

Оттуда, мы используем сценарий, который появляется связанный python-excelerator преобразовать документ в файл HTML. Мы затем передаем это по каналу в браузер командной строки (w3m) и отобразите его.

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

Можно создать функцию удара или псевдоним с этим, если Вы не хотите продолжать вводить его. Это должно дать Вам вывод как это:

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

Очень pretteh. Очевидно, это не собирается поддерживать любой вид макроса, редактирования или любой интерактивности. Это - просто средство просмотра. Вы могли также работать при снятии кавычек, которые переносят вещи. Я особенно не побеспокоен ими в этой точке.

Если Вам не нужен он, чтобы быть столь же табличными, у Вас могло бы просто быть что-то вроде этого:

py_xls2csv spreadsheet.xls 2>&1 | less

Можно пойти один далее, чем это и отобразить его немного более хорошим способом:

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

Это дает Вам следующее:

  1 this   is    a       spreadsheet
  2 it     is    very    nice
  3 this   has   three   rows
22
ответ дан 23 November 2019 в 01:06

Вот метод, который поддерживает символы Unicode.
т.е. это отображается , вместо dislaying значение Кодовой точки Unicode \U0906

Сценарий использует OpenOffice.org и PyODConverter.py для преобразования одного формата документа ООО в другой формат ООО. Типы преобразования основаны на расширениях файла:

  • HTML PDF odt документ txt отравляется большой дозой наркотика 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
#

Существует, вероятно, некоторый другой способ выйти из ООО (но я не знаю это),
И существует, вероятно, некоторый способ запустить независимый экземпляр ООО также, но я не знаю, как сделать это также, так как это, это требует, чтобы ООО не работало...

1
ответ дан 23 November 2019 в 01:06

Другие вопросы по тегам:

Похожие вопросы: