はじめに
こんにちは。10分で生産的なミーティングができるWeb会議ツール「minmeeting」を開発している伊勢川です。
未だ大人気のExcelですが、Macで使おうとするといろいろ問題があります。例えば、日本語を含むデータをUTF-8のCSVファイルで出力することはよくあると思いますが、Excelで普通に開くと文字化けしてしまいます。
ここでは、その問題を解消して、文字化けせずにMacのExcelでもCSVが開けるようになる方法を紹介します。
変換方法
カンマをタブに変換し、文字コードを「UTF-16LE-BOM」に変換し拡張子をxlsにすると、MacでもWindowsでもダブルクリックでExcelにて開けるようになります。macやcygwinのコマンドで実行する方法は下記の通りです。
.sh
inputFile="変換対象のCSVファイル名(UTF8)"
outputFile="出力するファイル名.xls"
tr "," "\\t" < $inputFile > $outputFile
nkf --overwrite -Lw --oc=UTF-16LE-BOM $outputFile
指定したCSVファイルをExcelで開ける形式に変換するシェル
コマンドを覚えるのが面倒な場合は、下記のようにシェルスクリプトにしておくと便利です。
.sh
# !/usr/bin/env bash
# ----------------------------------------------------------------------#
# カレントディレクトリにあるUTF-8のCSVファイルを、
# Excelで開ける形式(UTF-16LE-BOMのTSV)に変換
# ----------------------------------------------------------------------#
# 入力チェック
if [ $# -ne 2 ]; then
echo "第一引数に入力ファイル(UTF8のCSV)を指定。"
echo "第二引数に出力ファイル名(Excel)を指定。"
echo '例)./csv2xls.sh inputFileName.csv outputFileName.xls'
exit 1
fi
currentDirectory="$(pwd)"
inputFile="$currentDirectory/$1"
outputFile="$currentDirectory/$2"
tr "," "\\t" < $inputFile > $outputFile
nkf --overwrite -Lw --oc=UTF-16LE-BOM $outputFile
カレントディレクトリのすべてのCSVファイルを、Excelで開ける形式に変換するシェル
カレントディレクトリ以下のCSVファイルを一気に変換するシェルは下記の通りです。
.sh
# !/usr/bin/env bash
# ----------------------------------------------------------------------#
# カレントディレクトリのすべてのCSVファイル(UTF-8)を、
# Excelで開ける形式(UTF-16LE-BOMのTSV)に変換
# ----------------------------------------------------------------------#
currentDirectory="$(pwd)"
for filename in $currentDirectory/*.csv; do
inputFile="$filename"
outputFile="$filename.xls"
tr "," "\\t" < $inputFile > $outputFile
nkf --overwrite -Lw --oc=UTF-16LE-BOM $outputFile
done