Linuxシェルスクリプトでxlsxをxlsに変換する


14

シェルコマンドを使用して「.xlsx」ファイルを「.xls」に変換する必要があります。

私の仕事では、現在xlsx2csvコマンドを使用していますが、要件が変更されたため、すべての「.xlsx」ファイルを「.xls」ファイルに変換してさらに計算する必要があります。

そのために、私の仕事のある人は、「。xlsx」を「.xls」に変換できるコマンドを1つ開発しましたが、それは1つのシートにのみ適用できます。

1つのファイルに複数のシートがあります。

前もって感謝します....


また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が保持されます。そのため、変換が成功したことを検証した後、おそらくクリーンアップを行う必要があります。


このオプションは非常に優れていますが、1つの問題があると思います。libreofficeインスタンスを開き、それを「.xls」ファイルに変換します。libreofficeを開かず、「。xls」ファイルに変換できる他のオプションはありますか?これで私を助けてもらえますか?@forquare
プレム・ジョシ

1
@PremJoshiのマンページには、「[-convert-to]は--headlessを意味する」と書かれています。そのため、GUIは開かれません。ただし、起動後に初めて起動すると、デスクトップに応じて、サービスの登録中にスプラッシュ画面などが表示される場合があります。
lgeorget

1
@Igeorget!オプション「--headless」は私のために働いた!これは私の質問に対する正確な答えでした。
プレムジョシ

3
--convert-to暗黙のコミット--headlessgerrit.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.