[Mac] Terminal で Excel ファイルを csv に変換する1

Excel ファイルを csv に変換したい状況になった。正規表現でバリバリテキスト置換するには、テキストファイルのほうが便利だからだ。

そこで、Mac の Terminal でできる方法に挑戦してみた。

環境:macOS Catalina Version 10.15.2

やり方は簡単で、xlsx2csv をインストールすればいい。

$ sudo pip install xlsx2csv

変換は簡単で以下のようにする。

$ xlsx2csv [Excel ファイルへのパス] [出力したい csv ファイルのパス]

同一ディレクトリに出力したい場合は、csv ファイルのパスを ./[ファイル名].csv とすればいい。

ただし、xlsx は変換できるが、古い xls ファイルは Exception AttributeError などと表示されて変換できない。

そこで xls を xlsx に変換しようと以下の方法を試そうとした。

たくさんのExcel97-2003(xls)ファイルをExcel2007以降(xlsx)ファイルに変換する方法(Mac用) – Qiita
https://qiita.com/swimmy/items/097985ef8a03c2c94337

しかし、私の環境では Automator に Convert Format of Excel Files というアクションがなくなっている。試しに High Sierra でも試してみたが、そこにもアクションが存在しない。

Windows 上で OMPM と MS Office 互換機能パックを使った変更方法もある。

参考:
windows:MS純正ツールを使って古いエクセル形式(.xls)を新しい形式(.xlsx)に一括変換する方法 – Pブロ
https://papa-to-juju.hatenadiary.org/entry/20140109/1389242187

しかし特に MS Office 互換機能パックはインストール要件がややこしかったりして面倒そう。仕方がないので、Mac でいちいちファイルを開いて xlsx で保存し直すことにした。

ただ、すべて手動でやるのは大変なので Keyboard Maestro を使ってマクロを組んで実行した。

xlsx に変換できたので、xlsx2csv が使える。

参考:
zitsen/xlsx2csv.rs: Excel-like Worksheets (eg. .xlsx/.xls/.ods) to CSV Format Converter in Rust
https://github.com/zitsen/xlsx2csv.rs

Excelファイル(~.xls/~.xlsx)をLinuxコンソール上でCSV方式に変換する方法 | 俺的備忘録 〜なんかいろいろ〜
https://orebibou.com/2016/12/excel%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%EF%BD%9E-xls%EF%BD%9E-xlsx%E3%82%92linux%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E4%B8%8A%E3%81%A7csv%E6%96%B9%E5%BC%8F%E3%81%AB%E5%A4%89%E6%8F%9B/