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

Gitで管理しているExcelファイルの差分を見る

More than 5 years have passed since last update.

動機

ExcelファイルをGitで管理しているときに、差分を見られると嬉しい。Git for Windows (msysgit)は、WordファイルやPDFファイルは差分を見られるように設定済で配布されているが、Excelファイルについては未対応。

できたこと

  • git diffでExcelファイルに加えた変更を確認してからgit commitできる
  • もちろん過去の履歴の差分も見られる
  • 行頭にシート名が含まれていて複数シートにも対応している

CUIでのExcelファイルの差分表示例
cui.png

GUI (Git Extensions)でのExcelファイルの差分表示例
gui.png

超便利!!!

使ったもの

手順

Go環境の構築

まずはGo言語の環境を構築します。といっても、.msi形式のインストーラををダウンロードしてきてインストールするだけです。.msiファイルのダウンロードは https://golang.org/dl/ から。

インストール後は、環境変数GOPATHにフォルダを指定します。ちなみにですが、環境変数の管理にはRapid Environment Editorがお勧めです。GOPATHはどこでもよいです。自分しか使わないPCなので、C:\gocodeフォルダをつくり、システム全体の環境変数として指定しちゃいました。

gopath.png

コマンドプロンプトでgoコマンドが通ることと、GOPATHが設定されていることを確認します。

> go version
go version go1.4.2 windows/amd64

> go env GOPATH
C:\gocode

git-xlsx-textconvの取得とビルド

コマンドプロンプトで以下のとおり実行します。

> go get github.com/tokuhirom/git-xlsx-textconv

%GOPATH%\bin\git-xlsx-textconv.exeが実行できることを確認します。

> %GOPATH%\bin\git-xlsx-textconv.exe
2015/04/07 22:24:53 Usage: git-xlsx-textconv file.xslx

Gitの設定

Gitで設定しなくてはいけないのは、いつものgit configgitattributesの2つ。リポジトリごとの設定でもいいのですが、これまた自分しか使わないPCなので、msysgitのグローバルな設定に施してしまいます。msysgitのグローバル設定はC:\Program Files (x86)\Git\etc配下においてあります。

C:\Program Files (x86)\Git\etc\gitconfig をAdministrator権限のテキストエディタで開き、以下を追記します。ここでは、%GOPATH%ではなく$GOPATHを使うのが正解の模様。

[diff "xlsx"]
    binary = true
    textconv = $GOPATH/bin/git-xlsx-textconv

C:\Program Files (x86)\Git\etc\gitattributes を同じくAdministrator権限のテキストエディタで開き、以下を追記します。

*.xlsx  diff=xlsx
*.XLSX  diff=xlsx

以上で終わりです。簡単で便利です。

TODO

簡単とはいえ手順が必要なのはいけてないので、msysgitの本家に貢献できないか考える。

ちなみに、msysgitのデフォルトのgitattributesには以下が指定されていて、これらのファイルの差分は特に設定なしに差分が取れる。

*.doc   diff=astextplain
*.DOC   diff=astextplain
*.docx  diff=astextplain
*.DOCX  diff=astextplain
*.dot   diff=astextplain
*.DOT   diff=astextplain
*.pdf   diff=astextplain
*.PDF   diff=astextplain
*.rtf   diff=astextplain
*.RTF   diff=astextplain
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
ユーザーは見つかりませんでした