Help us understand the problem. What is going on with this article?

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

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

こんな感じです。
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形式の結果レポート生成に利用
  • Launch4j : .jarファイルを.exeファイルにラップして配布するのに利用
  • 動的計画法 : diff計算アルゴリズムに利用
    • 「行の挿入/削除を考慮する」「列の挿入/削除を考慮する」をともにONにした場合、方眼Diffは行数r、列数cに対して次の計算量で動作します。
O(cr^2 + c^2r)

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

想い

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

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

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


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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした