いつも忘れるのでメモ.以下で input.xlsx
を input.csv
に変換できる.環境は Debian GNU/Linux の libreoffice package.
% libreoffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":44,34,76 --outdir . input.xlsx
44,34,76
の意味は
- 44: Field Separator:
,
(default: 44) - 34: Text Delimiter Field Separator:
"
(default: 34) - 76: Character Set: Unicode (UTF-8) (default: 0 (System))
% libreoffice --headless --convert-to csv:"Text - txt - csv (StarCalc)" --outdir . input.xlsx
のように Default でも input.csv
は生成されるが日本語が全て ?
になってしまう.ということで Character Set の指定が必要で,3つの Token を与える.詳細は https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options のとおり.
追記 (2021/8/7)
csv (UTF-8)から xlsx への変換も同様に可能で,例えば以下.
% libreoffice --headless --convert-to xlsx --infilter="CSV:44,34,76" --outdir . input.csv
なお,MS Excel で CSV を直接開くには,もとの CSV の文字コードが Shift_JIS でなければならないはずで,UTF-8 の CSV を MS Excel に読み込むには「データ→テキストまたはCSVから」でインポートする必要がある.