用于查看 xls 文件的命令行工具

用于查看 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。

答案1

是的,不过这有点不方便。让我们先安装两个包:

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'

如果你不想一直输入,你可以用它创建一个 bash 函数或别名。它应该会给你这样的输出:

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

非常漂亮。显然,它不支持任何类型的宏、编辑或任何交互。这纯粹是一个查看器。您还可以删除包裹内容的引号。目前,我并不特别在意它们。

如果你不需要它像表格一样,你可以简单地使用如下内容:

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

答案2

这是一种维护 Unicode 字符的方法。
即它显示,而不是显示 Unicode 代码点值\U0906

该脚本使用开放办公室PyODConverter.py将一种 OOo 文档格式转换为另一种 OOo 格式。转换类型基于文件扩展名:

  • 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
#

可能还有其他方法可以退出 OOo(但我不知道)
并且可能还有其他方法可以启动 OOo 的独立实例,但我也不知道如何做到这一点,所以就目前而言,它要求 OOo 没有运行......

相关内容