LoginSignup
8
7

More than 5 years have passed since last update.

CSVファイルをMac/WindowsのExcelで開けるように変換する

Last updated at Posted at 2017-10-02

はじめに

こんにちは。10分で生産的なミーティングができるWeb会議ツール「minmeeting」を開発している伊勢川です。

未だ大人気のExcelですが、Macで使おうとするといろいろ問題があります。例えば、日本語を含むデータをUTF-8のCSVファイルで出力することはよくあると思いますが、Excelで普通に開くと文字化けしてしまいます。

ここでは、その問題を解消して、文字化けせずにMacのExcelでもCSVが開けるようになる方法を紹介します。

変換方法

カンマをタブに変換し、文字コードを「UTF-16LE-BOM」に変換し拡張子をxlsにすると、MacでもWindowsでもダブルクリックでExcelにて開けるようになります。macやcygwinのコマンドで実行する方法は下記の通りです。

inputFile="変換対象のCSVファイル名(UTF8)"
outputFile="出力するファイル名.xls"
tr "," "\\t" < $inputFile > $outputFile
nkf --overwrite -Lw --oc=UTF-16LE-BOM $outputFile

指定したCSVファイルをExcelで開ける形式に変換するシェル

コマンドを覚えるのが面倒な場合は、下記のようにシェルスクリプトにしておくと便利です。

#!/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ファイルを一気に変換するシェルは下記の通りです。

#!/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
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7