LoginSignup
71

More than 1 year has passed since last update.

Excel比較ツール「方眼Diff」作りました

Last updated at Posted at 2018-04-30

2020/08/03
これまでのWindows版に加えて、macOS版を試験リリースしました。:blush:

Excelファイル比較ツール「方眼Diff」1

こんな感じです。
※財務省が公開している2018年度および2019年度の一般会計歳入予算明細書を比較しています。
qiita.png

できること

  • 2つのExcelファイルの差分を取ることができます。
  • 元のExcelファイル(をコピーしたもの)に対して、差分箇所に色を付けて表示します。加えて、差分箇所をテキストでレポートすることもできます。
  • 行や列の挿入/削除を自動で検出することができます。キー列やキー行を指定する必要はありません。
  • Excelブック同士または特定のシート同士を比較することができます。Excelブック同士を比較する場合は、シート名が似たもの同士を自動でマッチングして比較します。
  • コマンドラインから起動することができます。すなわち、TortoiseGit等のバージョン管理ツールと組み合わせて使用することができます

まだ初期開発版ではありますが、単純なExcelファイルに対しては実用レベルに手が届いたと判断し、公開することにしました。

ダウンロードや詳しい説明はコチラからどうぞ。
https://hogandiff.hotchpotch.xyz/

動作の紹介

https://youtu.be/ZUWfTaO1WzE

実装

「方眼Diff」では次の要素技術およびアルゴリズムを採用しています。

  • JavaFX : GUIの実装に利用
  • Apache POI : Excelファイルの読み書きに利用
    • イベントモデルAPIをファイル内容の読み取りに利用
    • ユーザーモデルAPIを.xls形式の結果レポート生成に利用
  • SAX : .xlsx/.xlsm形式のExcelファイルからのシート名取得に利用
  • StAX : .xlsx/.xlsm形式の結果レポート生成に利用
  • exewrap : .jarファイルを.exeファイルにラップして配布するのに利用
  • 動的計画法 : diff計算アルゴリズムに利用
    • 「行の挿入/削除を考慮する」「列の挿入/削除を考慮する」をともにONにした場合、方眼Diffは行数r、列数cに対して次の計算量で動作します。
O(cr^2 + c^2r)

追い追い、それぞれの要素に関する派生記事を書いていきたいと思います。
⇒ ぼちぼち書いています。

想い

システム開発であれ一般の事務であれ、日本ではExcelによるドキュメントが広く利用されています。
その一方で、Excelファイルにはdiff(変更差分)を取りづらい、バージョン管理システムとの相性が悪いという大きな欠点があります。

いくつかの無料diffツールがあるにはあります。しかしどれもイマイチしっくりこない。良さそうなものになると有料になってしまう。
だったら自分で作れば良いじゃない! ということで作ってみた次第です。

プログラミングによって、誰かが楽になる、ハッピーになる! 日本の生産性が上がる!! となれば、プログラマ冥利に尽きるというものです。


  1. 本当はもっと別の名前にしたかったのですが・・・ しっくりくる名前は既に使われちゃってるんですよね。トホホ 

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
71