みっかぼーず

日常も仕事もゲームも下ネタも徒然なるままに書いていく。更新は不定期(水or日)

【ナレッジ】WinMergeでExcelファイルの差分を比較する

WinmergeでExcelファイルの差分を比較するの記事サムネイル


備忘録記事作成のきっかけ

どーも、いとです。
仕事のテストで「スクリプト実行後のDBの設定値確認」をやることがあるのですが、

現場では
・DBの値をExcelにコピペする
・変更前後の同フィールド(セル)の値を数式のTRUE/FALSEで判定・確認する
というようなやり方で検証を行い、エビデンスも作っています。

f:id:sousakuito:20190324231609j:plain:w640
※イメージ図

こういう作業ってそもそも手動人力でなんとかするものなの?
みんなDBの比較検証ってこんなことしてるの??


他の現場のやり方はちょっとわかりませんが、数値チェックなんて正確性が求められる作業はもっと楽にしたいよね。列600行1000以上とかあると……もうね、数式コピペするのもきつい。


というわけで、他の比較手段を考えてみる。
比較……ツール……あ!WinMergeは使えた!

「比較が簡単にできるツール」で思いついたのがWinMergeだったので色々調べてみたところ、WinMergeにプラグインを追加してExcelファイルを比較する方法があったので、備忘録として残しておきます。
他にもっとましな比較手段があるだろ、というツッコミは一旦飲み込んでください。


準備


▼用意するもの
・WinMerge
・xdocdiff(今回入れるプラグイン)

▼プラグインの入れ方は下記を参照
qiita.com

▼プラグインのDL先
xdocdiff WinMerge Plugin -Word、Excel、PowerPoint、pdfの比較・差分を見る-


(入れ方の説明は調べるとたくさん出てくるので本記事では割愛!!)


ファイルを比較する時の設定。

1.展開プラグイン横の「選択」を押下
2.展開プラグインの選択ウィンドウにて、ファイル展開プラグインで【amb_xdocdiffPlugin.dll】を選択
で差分比較ができました!


実践

実際にあるテストや修正内容を想定して、WinMergeを使ってみます。

▼テストでよくあるパターン

【パターン1】
一部レコードの設定値変更
└例:マスタテーブルの設定値変更

【パターン2】
新規カラム追加
└例:テーブル拡張

【パターン3】
レコードの追加・削除
└例:マスタテーブルの更新

パターン1

一部レコードの設定値が変更されるパターン。少ないときは1フィールドで済むので、確認しやすい部類に入る。

簡単なDBサンプルイメージは下記表。

変更前

ID NAME ADDRESS
1 山田太郎 東京都XX
2 田中次郎 北海道XX
3 山田花子 福岡県XX


変更後

ID NAME ADDRESS
1 山田太郎 東京都XX
2 田中次郎 千葉県XX
3 山田花子 福岡県XX

※変更箇所は赤字

ちなみに比較で使用するExcelファイルはこんな感じ。

文字列貼り付けした、という前提で進めますね。


ここから本題の差分比較。

▼WinMergeの比較結果
Winmerge比較結果
・相違値がある行はハイライト表示(濃い黄色)
・相違値がハイライト表示(薄い黄色)

セル単位で比較してくれているのでわかりやすい。欲を言えばエクセル表のような表示だと嬉しいが、それは一旦置いておく。
他に変更がない(白色)のも視覚的にわかるので良きかな。


パターン2

テーブル拡張などでカラム(列)がまるっと増えるパターン。

変更前

ID NAME ADDRESS
1 山田太郎 東京都XX
2 田中次郎 北海道XX
3 山田花子 福岡県XX


変更後

ID NAME ADDRESS DEL_SIN
1 山田太郎 東京都XX 0
2 田中次郎 北海道XX 0
3 山田花子 福岡県XX 0


▼WinMergeの比較結果

ぜーんぶ真っ黄色!!
カラムが追加されてる=全レコード変更有りなので当然といえば当然なんですけどね!

・相違値がある行はハイライト表示(濃い黄色)
・追加箇所がハイライト表示(濃いピンク)

全レコードに変更があるので黄色のハイライト表示がしつこく感じられるけど、これはしょうがないかな。


パターン3

こちらは行が追加されるパターン。

変更前

ID NAME ADDRESS
1 山田太郎 東京都XX
2 田中次郎 北海道XX
3 山田花子 福岡県XX


変更後

ID NAME ADDRESS
1 山田太郎 東京都XX
2 田中次郎 北海道XX
3 鈴木一郎 北海道YY
4 山田花子 福岡県XX


3行目にレコードを追加・ID(ソート順)にも変更が入った、と仮定して作ったサンプル。


▼WinMergeの比較結果

・相違値がある行はハイライト表示(濃い黄色)
・追加(相違)箇所がハイライト表示(濃いピンク)

Excelでの比較だと途中の行が変わるとFALSEの嵐になるので、このパターンはWinMergeで比較する方が楽そう。


比較結果の出力

今回のプラグインとは関係ないのですが、
比較結果をhtmlで出力できることもわかったので載せておきます。

▼レポート出力手順の参照ブログ
WinMergeの比較結果を出力する - bigLiBox


WinMergeでhtmlのレポート出力
差分比較後、「ツール>レポートの生成」で結果(拡張子htm)を保存できました。

▼保存したhtmlを開いてみた
WinMergeの差分比較結果(html)
ハイライト表示もそのまま再現した状態で保存されています。エビデンスとして使えそう。



▼今回の備忘録まとめ
・WinMergeでExcelファイルの差分比較
→プラグイン「xdocdiff」を入れてできた
・比較結果のレポート出力(html)


以上、備忘録記事でした!

普段何気なく使っていても、そのツールで何ができるかってよく知らないことが多いんですよね。調べているうちに「へぇ〜」と思ったことがあれば、これからも不定期にまとめていきたいと思います。


では、今回はこのへんで(・∀・)ノシ