Skip to content

TSV形式のログファイルをExcelで開く

はじめに

自宅で立てているNginxのログファイルは、TSV(タブ区切りのことだよ)フォーマットにしている。ログ項目の出力順などを工夫して、テキストエディタで開いた際にも見やすいように気を付けているのだが、どうしても表計算ソフトで値をフィルタして見たい、という場合がある。

この場合は素直にExcelを使う。どうせお金を払うなら仕事以外にもExcelを使おう。
いずれ操作を忘れてしまいそうなので、自分用のメモとして残しておく。

ログファイルを読み込みする

TSVフォーマットのテキストファイルをそのままExcelで開いても、望む結果は得られない。
以下の通りを操作する。

  1. メニューバーで「データ」を押下する
  2. 左側にある「テキストまたはCSVから」を押下する
  3. ファイル選択ダイアログで、読み込みしたいログファイルを選択する。
    ログファイルの拡張子を.logにしている場合は、右下のフィルターで「全てのファイル(*.*)」を選ぶこと。
  4. 専用の画面が開くので、「区切り記号」で「タブ」を選ぶ。
  5. 「読み込み」ボタンを押下する。

これで見慣れたExcel表にログファイルが読み込みできる。

読込みした直後の状態

デフォルトだとこんな感じになる。タブで列が区切られているのが分かる。
サンプルとして読み込みしたログファイルは、アタックと見られるリクエストを仕分けたattack.logなので、こんな内容になっている。

また、元のTSVファイルには(ログファイルなので)ヘッダー行が無い。そのため、Excelがデフォルトで名前を付けている。

Excelの表を最新化する

とはいえ、毎回この操作をするのはクッソ面倒臭いのでは?と思うが、Excelでは「このファイルをこういうルールで開くよ」と定義しているだけなので、ボタンを押すだけでExcelの表を最新化することができる。

わざわざメニューバーまでマウスを動かすのは面倒ならば、表のデータ範囲のセルで右クリックし、「更新」を押下してもOK。

先ほどの通り、メニューバーで「データ」から「すべて更新」を押下すると、最新の状態に更新してくれる。
Excelファイルを保存すれば状態も保存できるので、毎回「テキストまたはCSVから」をやる必要はない。

列幅を固定にする

列幅を変えても「すべて更新」を選んでリロードすると、その都度、列幅がリセットされてしまいイラッとする。余計なお世話である。

Excelがやってくれる自動の列幅変更を止める場合は、以下の通り操作すれば良い。

  1. 表のデータ範囲のセルで右クリックする。
  2. 右クリックメニューの「テーブル」から「外部データのプロパティ」を押下する。
  3. 「列の幅を調整する」のチェックを外す。

これがとても分かりにくかった。このメモ記事で一番書きたかったのはこれ。