Mac版ExcelはBOM付きUTF-16LEでないと正常にインポートできません。
以下Railsのコントローラーからの抜粋。
ポイントは、BOMのバイト列を force_encoding("UTF-16LE") しているところです。
こうしないと、output(UTF-16LE)と連結する際にエラーが出ます(ソースコードがUTF-8だとBOMのバイト列も当然UTF-8文字列とみなされるので)。
format.csv {
header = "ID,氏名,住所,年齢,電話番号\r\n"
CSV.generate(output = header) do |csv|
@users.each do |user|
csv << [user.id, user.name, user.address, user.age, user.tel]
end
end
bom = "\xFE\xFF".force_encoding("UTF-16LE")
send_data(bom + output.encode("UTF-16LE"),
:type => 'text/csv',
:filename => "your_file_name.csv")
}