search
LoginSignup
10

More than 5 years have passed since last update.

posted at

updated at

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

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では文字化けすると公言している。

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
What you can do with signing up
10