🤖

MacでCSVを文字化けなくExcelで開くのを簡単にする

2023/05/10に公開

はじめに

何かしらのデータを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のワークフローを作成する

  1. 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.

  1. NKFのインストール場所を確認する(Automatorで絶対パスが必要)。
which nkf

/opt/homebrew/bin/nkf

  1. 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

最終的にこのようになります。

  1. 名前を入力して保存する。

動作確認

ダミーデータを作成して動作確認します。サクッと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