Ubuntu Weekly Recipe

第363回CSVエディターとしてのLibreOffice Calc

実はLibreOffice CalcはCSVエディターとして使用するのもまた便利です。今回はそのコツを紹介します。

CSVエディターとして優秀なCalc

LibreOffice Calcは、CSVエディターとしてもなかなか優秀です。CSVはComma Separated Values(コンマ区切り値)の略であることはよく知られていますが、タブや他の記号で区切られているデータであってもCSVと呼ぶことがあったりして、かなり振り幅の大きなフォーマットとして使用されているのが現状です。ということは、CSVエディターにも柔軟性が求められるわけですが、LibreOffice Calcは充分にこれに応えてくれます。

準備

まずはCSVファイルを入手する必要があります。何でもいいですが、今回は郵便番号データを使用することにします。いくつかの種類があって、どれでもいいですが、読み仮名データの促音・拗音を小書きで表記するもの(zip形式)「全国一括」にしました。データが大きいので、北海道だけでいいとも思います。

LibreOfficeで扱うCSVファイルは何でもいいと書きましたが、拡張子はcsvでなければなりません。txtとかだと、Writerでファイルを開いてしまいます。タブ区切りだからといってtsvとかにする必要もありません。

インポートダイアログ

LibreOfficeでCSVファイルを開くと、必ずインポートダイアログが表示されます。もし表示されない場合は、拡張子を確認してください[1]⁠。

図1がそのダイアログですが、詳細に解説します[2]⁠。

  • 「文字エンコーディング」はその名のとおりで、もし誤っている場合は下にあるプレビューが文字化けします。逆に言えば、ここで文字化けしない文字エンコーディングを指定してください。日本語ではUTF-8かUTF-16かShift-JISかWindows-932のいずれかに該当する可能性が極めて高いです[3]⁠。
  • 「言語」は特段の理由がない限りは「日本語」でいいでしょう。外国のデータを扱う場合は、その国に変更する必要があります。
  • 「固定幅」⁠区切る」は、固定長の場合は前者を、可変長の場合は後者を選択してください。さらに、可変長の場合は区切り文字(デリミタ)を指定します。ご覧のとおり複数選択できますし、⁠その他」でデリミタを指定することもできます。おかしなフォーマットをCalcにインポートしたい場合、この機能は意外と使えます[4]⁠。
  • 「フィールド区切りの結合」は完全に意味不明ですが[5]⁠、ここにチェックを入れると空の項目がある場合はそこをスキップしてインポートします。もちろん複数のデータがある場合は、項目がずれるようなことにはなりません。
  • 「テキストの区切り記号」はそのままで、テキストを括る引用符を指定します。
  • 「フィールドをテキストとして引用する」は誤訳であり、⁠区切り記号で括られたフィールドをテキストに」とするのが妥当です[6]⁠。⁠テキストとして」とはどういうことなのかというのは後述します。
  • 「特殊数値を検出」は、日付や時間や指数表現をそれとしてインポートします。チェックを入れない場合は、数値としてインポートします。日付や時間や指数表現は国によって違うので、⁠特殊数値」が意味するところも違ってくるのが難しいところではあるのですが。
  • 「列の種類」は、その列の型を変更します(図2⁠⁠。たとえば数字の場合は数値としてインポートしますが、今回のように頭の「0」に意味がある場合、数値にすると消えてしまいますが、これだと困ります。というわけで、ここで「テキスト」にすると、この「0」は消えませんが、その代わりテキストとして扱われるので計算などは原則としてできなくなります[7]⁠。前述の「テキストとして」も、つまりはそういうことです。あとは「日付(YMD)」「非表示」は使用することがあるかもしれません。
図1 インポートダイアログ
図1 インポートダイアログ
図2 ⁠列の種類」のオプション
図2 「列の種類」のオプション

エクスポートダイアログ

保存時は、⁠名前を付けて保存」「テキストCSV (.csv)」を選択します。変更していない場合はエクスポートダイアログが表示されないかもしれません。その際、⁠フィルター設定を編集する」にチェックを入れると、エクスポートダイアログが表示されます。

エクスポートダイアログは図3です。

  • 「文字エンコーディング」はいいでしょう。文字化けしないものを選択してください。
  • 「フィールドの区切り文字」は、通常デフォルトのままでいいでしょう。
  • 「テキストの区切り文字」も、通常はデフォルトのままでいいでしょう。
  • 「セルの内容を表示どおりに保存」はデフォルトでチェックが入っていますが、このチェックを外すと生データのまま保存することがあるようです。しかし、具体的にどんな数値でそうなるのかの検証はできませんでした。通常はデフォルトのままでいいでしょう[8]⁠。
  • 「計算結果の代わりにセルの数式を保存」もそのままです。たとえばセルに⁠=3*3⁠と入力していた場合、デフォルトでは⁠9⁠と保存されますが、ここにチェックを入れると⁠=3*3⁠のままで保存されます。どういった場面で便利なのかはよくわかりませんが、そういう機能があることを覚えておくといいかもしれません。
  • 「全てのテキストのセルを引用符で囲む」も見てのとおりの機能です。これは今回のように数字の前に「0」が入っているものの、これをテキストとして扱いたいと言うような場合には、チェックを入れておくといいでしょう。
  • 「指定された列幅」は若干わかりにくいですが、要するに固定長のことです。と言うわけで、ここにチェックを入れると固定長でエクスポートできます。

ついでに、CSVで保存する場合は同時にods形式でも保存しておくといいでしょう。Excelで開くことがある場合は、xlsx形式でもいいでしょう[9]⁠。

図3 エクスポート時のオプションダイアログ
図3 エクスポート時のオプションダイアログ

使用バージョン

本稿執筆時点でUbuntu 14.04ではLibreOffice 4.2.7、14.10では4.3.3ですが、先日4.4.0がリリースされ、すでにPPAでアップデートできるようになっています。もちろん現在開発中のUbuntu 15.04では、4.4.xになります。今回2万行くらいのデータを扱ったところでは、意外にも4.4.0が一番安定して動作していました。特にOpenCLを有効にすると[10]4.2.7や4.3.3ではたびたび落ちて作業になりませんでしたが、4.4.0では特に問題ありませんでした[11]⁠。もちろん扱うファイルによって変わってくることは充分に考えられますので、あくまで参考程度にお考えください。

4.4からは「ツール」「セルの内容」「数式を数値に」という機能が追加されていて、計算結果を数値で欲しい場合に使用すると便利です。

Excelのほうが便利なところ

Excelのほうが便利なところもいくつかあります。あくまで筆者が気づいた範囲ですが。

処理速度が速い

同じ処理、たとえば連続データを実行しても、速度の差は如何ともしがたいです。Excelでは体感でも数倍の速度で処理するうえ、時間がかかる処理でも進捗が表示されるので大人しく待てるのですが、Calcは時間がかかるうえに反応なしになるだけなので進捗がわかりません。

和暦の扱い

いまどきCSVデータに和暦が入っているということもあまりないとは思うのですが[12]⁠、Excelでは日付として扱ってくれますがCalcでは文字列として扱ってしまいます。

関数の入れ子の数

関数はExcelのほうがたくさん入れ子にできます。具体的には忘れてしまいましたが、Calcでは40個前後、Excelでは60個前後だったと記憶しています。もちろんこれだけの入れ子を必要としている時点で使い方が間違っているのですが、そうとも言ってられない場面ではExcelを使用しました。

おすすめ記事

記事・ニュース一覧