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
"氏名","郵便番号","都道府県","市区町村","番地","建物名等"
"荒川 雄介","602-0000","京都府","京都市の何処か","12-9","マンション10-9"
デスクトップにでも転がしておきましょう。
##文字化け
###Excelの場合
まずは手っ取り早く開いてみましょう。
- address.csvを右クリック
- プログラムから開く > Microsoft Excel を選択
見事な文字化けです。
ExcelはUTF-8に対応しましたが、BOM付きでないと文字化けします。
###Webサービスのcsvは文字化けすると思え
Webサービスで提供されるcsvファイルは、まず文字化けすると考えて下さい。
Linuxで提供されているサービスが殆どなので、
BOM付きのUTF-8なんかにはしてくれません。
BOMのないUTF-8です。
Yahoo!知恵袋等にはCSVが文字化けします。
みたいな投稿ばかりです。
###Calcの場合
- address.csvを右クリック
- プログラムから開く > LibreOffice Calc
- テキストのインポートで文字エンコーディングを選ぶ
- 区切りのオプションで コンマ を選ぶ
- OK を押す
Shift-JISだろうが、UTF-8だろうが何でも来い。
ステキ!
##勝手に日付に変換
文字化けを避けるためにExcel,Calc共にUTF-8 BOM付きのCSVを読み込むことにします。
デスクトップにあるaddress2.csvを右クリックして開きます。
###Excelの場合
番地の列をみてください。
CSV上では12-9としていたのが 12月9日 と勝手に日付に変換されてしまっています。
これをこのまま 上書き保存 してしまうと、
もう 12-9 ではなく、 2015/12/9 の文字列に変わってしまいます。
勝手にデータを書き換えるなんてありえない!!
###Calcの場合
同じく番地の列を見ると…。
お、 12-9 のままです。
ステキ!
##結論
csvファイルを扱うならExcelではなくCalcを使え。
次はnogajunさんの
Impressで映画Trainspottingのオープニングみたいな画面効果を作る
です。
##参考資料
Excel で UTF‐8 の CSV を作成したい
ExcelはBOM付きのUTF-8しか読めないことが分かります。
Square-商品情報をインポートするには
csvはUTF-8で吐き出すのでExcelでは文字化けすると公言している。