리눅스 쉘 스크립트에서 xlsx를 xls로 변환


14

쉘 명령을 사용하여 ".xlsx"파일을 ".xls"로 변환해야합니다.

내 작품에서 우리는 현재 xlsx2csv 명령을 사용하고 있지만 요구 사항이 변경되었으며 추가 계산을 위해 모든 ".xlsx"파일을 ".xls"파일로 변환해야합니다.

이를 위해 제 작업의 일부 사용자가 ".xlsx"를 ".xls"로 변환 할 수있는 하나의 명령을 개발했지만 한 시트에만 적용 할 수 있습니다.

하나의 파일에 여러 개의 시트가 있습니다.

미리 감사드립니다 ....


그것은 또한 pyxl 라이브러리를 사용하여 수행 할 수 있습니다, 이것은 반대를 수행합니다 stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
마크

답변:


20

LibreOffice를 설치하면 다음 명령을 사용할 수 있습니다.

libreoffice --headless --convert-to xls myfile.xlsx

또는 그냥 :

libreoffice --convert-to xls myfile.xlsx

최신 버전 (> = 4.5)의 경우는 --convert-to의미 --headless.

그러면 myfile.xls 가 생성 되고 원본 myfile.xlsx가 유지 되므로 변환이 성공적으로 완료되었는지 확인한 후에 정리해야합니다.


이 옵션은 매우 좋지만 문제가 하나 있다고 생각합니다. libreoffice 인스턴스를 연 다음 ".xls"파일로 변환합니다. libreoffice를 열지 않아도 ".xls"파일로 변환 할 수있는 다른 옵션이 있습니까? 이것 좀 도와 줄래? @forquare
프렘 Joshi

1
@PremJoshi 매뉴얼 페이지에 "[--convert-to]는 --headless를 의미합니다." GUI가 열리지 않습니다. 그러나 부팅 후 처음 시작하면 바탕 화면에 따라 서비스를 등록하는 동안 스플래시 화면이나 이와 유사한 화면이 표시 될 수 있습니다.
lgeorget

1
@Igeorget! 옵션 "--headless"가 저에게 효과적이었습니다! 이것은 내 질문에 대한 정확한 대답이었습니다.
Prem Joshi

3
가 만든 커밋 --convert-to의미가 --headless있다 gerrit.libreoffice.org/... (버전 4.4). 이전 버전에서는 두 옵션을 모두 전달해야합니다.
lgeorget

1
xlsx 파일이 해당 제한을 초과하면 경고 메시지를 인쇄하지 않으므로 xls 형식 65535 행 제한에 유의하십시오 (경고없이 원본에 해당하지 않는 65535 행 파일을 출력 함)
golimar

6

당신은 또한 ssconvertgnumeric의 동반자 변환기 도구를 사용해 볼 수 있습니다

ssconvert in.xlsx out.xls

(일반적으로 참조 man ssconvert)

들어 정상적인 경우,이 괜찮습니다. 입력 파일이 (libreoffice 및 gnumeric) 기반 변환기 모두에서 매우 고급 인 경우 일부 세부 사항이 유실 될 수 있습니다.

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