107
79

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2018-04-30

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

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

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

方眼Diff_e1_v0.16.0.png
方眼Diff_e2_v0.16.0.png
方眼Diff_e3_v0.16.0.png

できること

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

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

2024/4/29追記:

公開後50回以上のバージョンアップを重ね、多くの方にご利用いただいています。
大変便利ですので是非ご利用ください!

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

動作の紹介

実装

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

  • JavaFX : GUIの実装に利用
  • Apache POI : Excelファイルの読み書きに利用
    • イベントモデルAPIをファイル内容の読み取りに利用
    • ユーザーモデルAPIを.xls形式の結果レポート生成に利用
  • SAX : .xlsx/.xlsm形式のExcelファイルからのシート名取得に利用
  • StAX : .xlsx/.xlsm形式の結果レポート生成に利用
  • exewrap : .jarファイルを.exeファイルにラップして配布するのに利用
  • 組み合わせ最適化問題の応用:
    • diff計算にレーベンシュタイン距離の拡張と動的計画法を利用
    • シート名同士の曖昧マッチングに貪欲法を利用
    • Excelブック名同士の曖昧マッチングに最小費用流問題の解法を利用

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

想い

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

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

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

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

107
79
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
  3. You can use dark theme
What you can do with signing up
107
79

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?