Edited at

CSVを扱うならExcelではなくCalcで

More than 3 years have passed since last update.

LibreOffice Advent Calenderの季節がやって参りました。

榎さんに続いて 2015年12月3日の記事です。

今回は小さなTipsでも紹介しようと思います。

csvファイルにはCalc を使いましょう。

csvファイルはExcelで開くな とIT業界で伝えられております。

下記の2つの理由です。


  • 文字化けする

  • 勝手に日付に変換

Calcは上記の問題を難なく解決してくれます。

僕が管理している住所録のCSVを元に説明していきます。


環境


  • Windows7 SP1 x64

  • Microsoft Excel 2010

  • LibreOffice Calc 5.0.32 (x64) ja_JP


準備するファイル

下記の2つのファイルを用意しました。

リンクをクリックしてそれぞれダウンロードしておいて下さい。



  • address.csv


    • Encoding UTF-8N

    • Webサービスで扱われる一般的なUTF-8




  • address2.csv


    • Encoding UTF-8 BOM付き

    • Excelで扱えるUTF-8




address.csvとaddress2.csvの中身

"氏名","郵便番号","都道府県","市区町村","番地","建物名等"

"荒川 雄介","602-0000","京都府","京都市の何処か","12-9","マンション10-9"


デスクトップにでも転がしておきましょう。


文字化け


Excelの場合

まずは手っ取り早く開いてみましょう。


  1. address.csvを右クリック

  2. プログラムから開く > Microsoft Excel を選択

openexcel01.png

見事な文字化けです。

ExcelはUTF-8に対応しましたが、BOM付きでないと文字化けします。


Webサービスのcsvは文字化けすると思え

Webサービスで提供されるcsvファイルは、まず文字化けすると考えて下さい。

Linuxで提供されているサービスが殆どなので、

BOM付きのUTF-8なんかにはしてくれません。

BOMのないUTF-8です。

Yahoo!知恵袋等にはCSVが文字化けします。

みたいな投稿ばかりです。


Calcの場合


  1. address.csvを右クリック

  2. プログラムから開く > LibreOffice Calc

  3. テキストのインポートで文字エンコーディングを選ぶ

  4. 区切りのオプションで コンマ を選ぶ

  5. OK を押す

opencalc01.png

opencalc02.png

Shift-JISだろうが、UTF-8だろうが何でも来い。

ステキ!


勝手に日付に変換

文字化けを避けるためにExcel,Calc共にUTF-8 BOM付きのCSVを読み込むことにします。

デスクトップにあるaddress2.csvを右クリックして開きます。


Excelの場合

番地の列をみてください。

CSV上では12-9としていたのが 12月9日 と勝手に日付に変換されてしまっています。

これをこのまま 上書き保存 してしまうと、

もう 12-9 ではなく、 2015/12/9 の文字列に変わってしまいます。

勝手にデータを書き換えるなんてありえない!!

openexcel02.png


Calcの場合

同じく番地の列を見ると…。

お、 12-9 のままです。

ステキ!

opencalc02.png


結論

csvファイルを扱うならExcelではなくCalcを使え。

次はnogajunさんの

Impressで映画Trainspottingのオープニングみたいな画面効果を作る

です。


参考資料

Excel で UTF‐8 の CSV を作成したい

ExcelはBOM付きのUTF-8しか読めないことが分かります。

Square-商品情報をインポートするには

csvはUTF-8で吐き出すのでExcelでは文字化けすると公言している。