私はこれであることに気づくいいえ完全にUNIX/Linuxに関する質問です。しかし、これが私がLinuxでやるべきことなので、誰かが答えてくれることを願っています。
.xlsx
私は(他の人によって)定期的に更新されるオンラインExcelファイル()を持っています。このExcelシートを処理するスクリプトを作成し、それをcronjobに設定したいと思います。ただし、これを行うには、.csv
セミコロンで区切られた列(したがってa)を含むテキストファイルに変換する必要があります。残念ながら、一部の列にはカンマがあるため、カンマで区切ることはできません。シェルでこの変換を実行できますか? Open OfficeがインストールされていてGUIを使用してこれを実行できますが、コマンドラインからこれを実行できるかどうかを知りたいです。ありがとうございます!
PS:私はMacも持っています。 Macで動作するソリューションがあれば、それも良いようです。 :)
ベストアンサー1
オープンオフィスに含まれるウノフプログラムはコマンドラインでフォーマット変換を実行します。
unoconv -f csv filename.xlsx
より複雑な要件の場合は、以下を使用してXLSXファイルを解析できます。Spreadsheet::XLSX
パールまたは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