MacでCSVを文字化けなくExcelで開くのを簡単にする
はじめに
何かしらのデータをCSVで出力するとファイルの文字コードがUTF-8になっていることが多いですが、CSVファイルをそのままダブルクリックするとExcelで文字化けしてしまいます。毎回Excelを起動してファイルメニューからごにょごにょするのが面倒…ということでAutomatorの出番です。
BOM付きのUTF-8だとExcelで文字化けしないため文字コードを変換してからExcelで開くクイックアクションをAutomatorで作成します。
Macの環境
sw_vers
ProductName: macOS
ProductVersion: 13.3.1
ProductVersionExtra: (a)
BuildVersion: 22E772610a
Automatorのワークフローを作成する
- Homebrewを使ってNKFをインストールする(Homebrewはこちら)。
brew install nkf
インストールされたバージョンは以下の通りです。
nkf -v
Network Kanji Filter Version 2.1.5 (2018-12-15)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2018, The nkf Project.
- NKFのインストール場所を確認する(Automatorで絶対パスが必要)。
which nkf
/opt/homebrew/bin/nkf
- Automatorアプリを開き、新規書類からクイックアクションを選択する。
4.「シェルスクリプトを実行」アクションをドラッグし設定する。
「ワークフローが受け取る現在の項目」は [書類]、「検索対象」は [Finder.app]を選択します。イメージとカラーはご自由に。
「シェルスクリプトを実行」アクションでは、「入力の引渡し方法」は[引数として]を選択し、スクリプトは下記を入力します。NKFを利用してファイルをBOM付きのUTF-8に変換して上書き保存し、Excelで開くスクリプトです。
for f in "$@"
do
/opt/homebrew/bin/nkf --overwrite --oc=UTF-8-BOM -Lw "$f"
open -a /Applications/Microsoft\ Excel.app "$f"
done
最終的にこのようになります。
- 名前を入力して保存する。
動作確認
ダミーデータを作成して動作確認します。サクッとPythonで。
>>> from faker import Faker
>>> import csv
>>> fake = Faker('ja-JP')
>>> with open("dummy.csv", "w") as f:
... writer = csv.writer(f)
... for _ in range(10):
... row = [fake.name(), fake.address()]
... writer.writerow(row)
...
文字コードを確認するとUTF-8です。
nkf --guess dummy.csv
UTF-8 (CRLF)
これをExcelでそのまま開くと文字化けしますが
クイックアクションを経由すると
文字化けしません🎉
クイックアクション後のファイルは文字コードがBOM付きのUTF-8になっています。
nkf --guess dummy.csv
UTF-8 (BOM) (CRLF)
終わりに
意外に周りも毎回Excel開いてから…やVS Codeなどテキストエディタで一回開いて文字コード変更してからとか面倒なことをしている人が多かったので共有します。スクリプトを見て分かる通り、特にCSVかどうかなどチェックしていないので一応ご注意を。
ちなみにショートカットアプリでも同じようにできますが、CSVが保存されたフォルダによっては「Operation not permitted」となります。
Discussion