理想的にはコマンドラインを使用して、複数の.csvファイルを1つのマルチシート.xlsスプレッドシートに変換する方法はありますか?


14

理想的にはコマンドラインを使用して、複数の.csvファイルを1つのマルチシート.xlsスプレッドシートに変換する方法はありますか?

CLIソリューションがない場合は、理想的にはawkまたはpascalで動作するAPIがあるかどうかを知っておくと便利ですが、それがうまくいかない場合は、かなりうまくいきます。


Maythuxが言及したssconvertは、Gnumericの付属コマンドであり、デフォルトではUbuntuデスクトップシステムにインストールされますが、サーバーバージョンにはインストールされません。
16

ExcelがCSVを.xlsファイルに読み込むという事実を考えると、単純に次のことができますcat *.csv > file.xls


1
ssconvertは完璧にトリックを行います。必要なのは、各.csvファイルを別々のシートに入れることでした。catを使用してもそれは達成されません。ssconvertはありません。
ピーターブルックス

@ash csvとxlsは異なる形式で、csvの束をファイルに入れて名前を変更するとxlsはまったく機能しません.csvは複数のシートをサポートしないため、1つの長いcsvを作成するだけでなく、csvはプレーンテキスト形式なのでxlsはバイナリ形式です
-chiliNUT

回答:


16

コマンドssconvertを使用できます。

ssconvert example.csv example.xls

複数のファイルに対してこれを行うには、csvファイルに対してbashループを作成し、ジョブを実行する必要があります。ここにヒント:

for i in *.csv; do ssconvert "$i" "${i%.*}".xls; done

編集:

単一のxlsファイルに変換してマージするには、ssconvertを使用することもできます。

ssconvert --merge-to=output.xls file1.csv file2.csv ....

または簡単に

ssconvert --merge-to=output.xls *.csv 

1
変数を引用符で囲むことは非常に重要"$i" "${i%.*}".xlsです。そうしないと、スペースを含むファイル名はコマンドを中断します(関連しないファイルを上書きする可能性があります)。
水田ランダウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.