環境
OS : Windows 10
Python 3.6
EXCELファイルをCSVへコンバートしたい事案があり、調べました。
Pythonのライブラリ xlsx2csv を使ってxlsxファイルをcsvファイルへ変換できます。
インストール
ライブラリ xlsx2csv はpipコマンドでインストールできます。
コマンド
pip install xlsx2csv
準備
pipコマンドの実行でこのフォルダの配下に、 xlsx2csv という名前のファイルができました。
C:\Users\xxx\AppData\Local\Programs\Python\Python36\Scripts
このフォルダが環境変数のpathに設定されていても、 xlsx2csv が拡張子のないファイルのため、そのままでは使いにくかった。
(以下のようにpythonコマンドおよびファイルパスを指定しないと動きませんでした。)
コマンド
python (ファイルパス指定)/xlsx2csv
中身をみるとpythonスクリプトです。
ファイル名変更
簡単に使うために .py の拡張子つきにファイル名を変更します。
xlsx2csv → xlsx2csv.py
使い方
コマンドプロンプトのコマンドラインで実行できます。
xlsx2csv.py が置かれているフォルダのpathが通っていれば以下のコマンドで実行できます。
コマンド
xlsx2csv.py xlsxfile [outfile]
以下に便利なオプションを抜粋して記載します。
使い方・ヘルプを確認したい
コマンド
xlsx2csv.py -h
csvファイルに結果出力したい
コマンド
xlsx2csv.py xlsxfile csvfile
- 実行例省略
コマンドラインに結果出力したい
コマンド
xlsx2csv.py xlsxfile
実行例
>xlsx2csv.py sample.xlsx
,サンプルファイル,,,,
,,,,07-20-18,サンプル会社
,サンプル表,,,,
,,列1,列2,列3,列4
,1,"\11,000","\12,000","\13,000","\14,000"
,2,"\21,000","\22,000","\23,000","\24,000"
,3,"\31,000","\32,000","\33,000","\34,000"
,4,"\41,000","\42,000","\43,000","\44,000"
タブ区切りに変更したい
- デフォルトはカンマ(,)区切り。
- 金額や係数で3桁区切りのカンマ(,)がハードコードされているときとかはタブ区切りにしたい。
コマンド
xlsx2csv.py -d tab xlsxfile
実行例
>xlsx2csv.py -d tab sample.xlsx
サンプルファイル
07-20-18 サンプル会社
サンプル表
列1 列2 列3 列4
1 \11,000 \12,000 \13,000 \14,000
2 \21,000 \22,000 \23,000 \24,000
3 \31,000 \32,000 \33,000 \34,000
4 \41,000 \42,000 \43,000 \44,000
空白行は出力から除きたい
コマンド
xlsx2csv.py -i xlsxfile
実行例
>xlsx2csv.py -i sample.xlsx
,サンプルファイル,,,,
,,,,07-20-18,サンプル会社
,サンプル表,,,,
,,列1,列2,列3,列4
,1,"\11,000","\12,000","\13,000","\14,000"
,2,"\21,000","\22,000","\23,000","\24,000"
,3,"\31,000","\32,000","\33,000","\34,000"
,4,"\41,000","\42,000","\43,000","\44,000"
文字列を" "で括りたい
- 括るレベルの指定が必要
- レベル:none / minimal / nonnumeric / all
- -q のあとに上記いづれかをKEYWORD指定
コマンド
xlsx2csv.py -q *KEYWORD* xlsxfile
実行例
>xlsx2csv.py -q nonnumeric sample.xlsx
"","サンプルファイル","","","",""
"","","","","07-20-18","サンプル会社"
"","サンプル表","","","",""
" ","","列1","列2","列3","列4"
"","1","\11,000","\12,000","\13,000","\14,000"
"","2","\21,000","\22,000","\23,000","\24,000"
"","3","\31,000","\32,000","\33,000","\34,000"
"","4","\41,000","\42,000","\43,000","\44,000"