これはではないことを理解しています 完全にUNIX/Linux関連の質問。しかし、これはLinuxで行うことなので、誰かが答えを持ってくれることを願っています。
オンラインのExcelファイル(.xlsx
)を持っています )定期的に(他の誰かによって)更新されます。そのExcelシートを処理するために、スクリプトを作成してcronジョブとして配置したいと思います。ただし、そのためには、それをテキストファイルに変換する必要があります(つまり、.csv
)セミコロンで区切られた列。一部の列にはカンマが含まれているため、残念ながらカンマで区切ることはできません。シェルからこの変換を行うことは可能ですか? Open Officeをインストールしていて、GUIを使用してこれを実行できますが、コマンドラインからこれを実行できるかどうかを知りたいです。ありがとう!
PS:私もMacマシンを持っているので、そこで何らかの解決策が機能するのであれば、それも良いことです。 🙂
承認された回答:
OpenOfficeには、コマンドラインでフォーマット変換を実行するためのunoconvプログラムが付属しています。
unoconv -f csv filename.xlsx
より複雑な要件については、Spreadsheet::XLSX
を使用してXLSXファイルを解析できます。 Perlまたはopenpyxl
Pythonで。たとえば、ワークシートをセミコロンで区切られたCSVファイルとして印刷する簡単なスクリプトを次に示します(警告:テストされていない、ブラウザに直接入力):
perl -MSpreadsheet::XLSX -e '
$ = "n"; $, = ";";
my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
my $worksheet = ($workbook->worksheets())[0];
my ($row_min, $row_max) = $worksheet->row_range();
my ($col_min, $col_max) = $worksheet->col_range();
for my $row ($row_min..$row_max) {
print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
}
' filename.xlsx >filename.csv