xls 파일을보기위한 명령 줄 도구


27

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.

그러나 파일을 열고 시트 이름을 'test'또는 다른 것으로 바꾸면 제대로 작동합니다. 기본 이름을 처리하려면 무엇을 조정해야합니까? (시트 1 등)

현재 열려고하는 파일에는 Sheet1이라는 하나의 시트 만 있습니다.

답변:


22

그래도 조금 해 키다. 두 개의 패키지를 설치하여 시작해 봅시다 :

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

일반 텍스트 파일로 덤프하려면 : links -dump /tmp/tempspreadsheet.html ..... 또한 :있는 그대로, 유니 코드 문자를 \u0950형식으로 인쇄 합니다. 아마도 유니 코드 문자를 생성하기 위해 출력을 처리하는 방법이있을 수 있습니다. 누군가 " 간단한 "방법으로,보고 싶습니다 ...
Peter.O

@fred 나는 그것을 w3m더 좋게 보이기 때문에 지금으로 바꿨다 w3m --help. 또한 파일로 파이프를 파이프해야 할 필요성을 포함하여 길이를 줄였습니다.
Oli

대박! 이것은 대부분의 경우에 효과가 있습니다. 질문의 2 부에 대한 기본 게시물 편집을 참조하십시오 (의견보다 내용을 형식화하는 것이 더 쉽습니다)
David Oneill

py_xls2csv함께 작동하도록 하드 코딩 코드 페이지 cp1251 .. 나는의 3 개 인스턴스를 대체하는 것으로 나타났습니다 cp1251utf-8결의 유니 코드 문자를 표시하지 않는 '문제를 "... 나는 그것이 spreadsheed에 무엇에 따라 달라집니다 같아요.하지만 사용하여 UTF-8 나를 위해 일했습니다 ... (나는 답변을 게시 한 후에야 이것을 알지 못했지만 다른 변환에 유용 할 수 있습니다)
Peter.O

뒤늦은 설명 ... 방금 CSS를 사용하여 CSV 파일을 표로 만들려고 시도했습니다 (xls로 먼저 변환). 생성 된 html공간이 여러 공간을 유지 하지만 렌더링 된 출력은 단일 공간으로 표시합니다 (일반적으로 html). ..로 <td> cows         moo </td>표시됩니다 cows moo. 이것에 대한 약간의
조정이

1

다음은 유니 코드 문자를 유지하는 방법입니다.
즉. 유니 코드 코드 포인트 값을 지연시키지 않고을 표시 합니다.\U0906

이 스크립트는 OpenOffice.orgPyODConverter.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
#

오픈 오피스를 종료하는 다른 방법이있을 것입니다. (아직 모르겠습니다)
오픈 오피스의 독립 인스턴스를 시작하는 방법도있을 것입니다.하지만 어떻게해야할지 모르겠습니다. 오픈 오피스가 실행되고 있지 않아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.