web-dev-qa-db-ja.com

ODSスプレッドシートファイルを端末上のシートごとにcsvファイルに分割する方法

スプレッドシート(​​odsまたはxlsx)を、スプレッドシートの各シートに1つずつ、複数のcsvファイルに分割したいと思います。

グラフィカルアプリを起動せずに、できれば1つのライナーでこれを実行したいと思います。

何か案は?

リンクされた複製は、回答の1つ(受け入れられたものではない)で可能な解決策を提供し、役に立ちましたが。私が要求したように、このソリューションはODSファイルでは機能せず、質問は十分に異なると考えています。

6
Bruni

さて、libreofficeは、スクリプトからドキュメントを変換できます(つまり、GUIを開かずにヘッドレスモードで)。スプレッドシート形式をCSVに変換するには、その最も単純な形式は次のようになります。

libreoffice --convert-to csv PATH/TO/YOUR.ODS

ただし、これはドキュメントの最初のシートを取得して変換し、他のすべてを無視します。残念ながら、変換するシートを選択するオプションもありません。


したがって、 xlsx2csv のような外部ツールが必要になります。これは、XLSXファイルをCSVに変換するオープンソースPython(2と3の両方)スクリプトであり、すべてのシートを個別のファイルに抽出することをサポートします。

Ubuntuには既にPythonがインストールされていますが、最初にパッケージマネージャーとしてpipをインストールする必要がある場合があります。 Python 3を使用しますが、以下のすべてのコマンドを変更して2で実行することもできます。

Sudo apt install python3-pip

次に、xlsx2csvとともにpip3をユーザーのパッケージディレクトリにインストールします。

pip3 install --user xlsx2csv

その後、実行可能スクリプトは~/.local/bin/xlsx2csvにあります。


XLSX形式がまだない場合は、ODSスプレッドシートをlibreofficeで変換しましょう。

libreoffice --convert-to xlsx PATH/TO/YOUR.ods

次に、xlsx2csvを使用してすべてのシートを抽出します。フォルダーOUTPUTFOLDERを作成し、そこに抽出されたすべてのSHEETNAME.csvを配置します。

~/.local/bin/xlsx2csv -a YOUR.xlsx OUTPUTFOLDER
5
Byte Commander

xls2csv (変換する。XLS)ツールの使用 catdoc パッケージインストールSudo apt install catdoc

xls2csv -b '
' Excel.xls | awk '{print >"sheet"NR}' RS='\n\n'

このxls2csv -b ' ' Excel.xlsはMS-Excelファイルを読み取り、その内容をコンマ区切りデータとして標準出力に配置し、-b STRINGを使用して、シートにどの文字(または文字列;ここで実際の改行を定義したか)で区切るように指示します。


xlsx2csv を使用します(変換するには。XLSX); Sudo apt install xlsx2csvのインストール:

xlsx2csv -s 0 Excel.xlsx |
    awk '!/,/ { nextSheet++; next } { print >"sheet"nextSheet }'

-s 0は、すべてのシートを印刷することを意味します。

4
αғsнιη

を見てみましょう

ssconvert -O 'separator=:: format=raw quoting-mode=never' -S x.ods  out%n.txt

\ thanks {Bruni}

  • -O 'separator= format= ...'は、csv形式の詳細を制御するために使用されます
  • -Sはシートごとに異なる出力ファイルを作成します
2
user216043