Son birkaç gündür bu problemle uğraşıyorum ve Excel dosyalarını kaynak kontrolünde saklamaları çok daha kolay olacak şekilde ayıklamak ve normalleştirmek için küçük bir .NET yardımcı programı yazdım. Çalıştırılabilir dosyayı burada yayınladım:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..ve buradaki kaynak:
https://bitbucket.org/htilabs/ooxmlunpack
Herhangi bir ilgi varsa, bunu daha yapılandırılabilir hale getirmekten mutluluk duyarım, ancak şu anda yürütülebilir dosyayı bir klasöre (örneğin, kaynak deponuzun köküne) koymalısınız ve çalıştırdığınızda:
- Klasörü ve alt klasörlerini .xlsx ve .xlsm dosyaları için tarayın
- Dosyanın bir kopyasını * .orig olarak alın.
- Her dosyayı açın ve sıkıştırmadan yeniden sıkıştırın.
- Arşivdeki geçerli XML olan tüm dosyaları oldukça yazdırın.
- Calcchain.xml dosyasını arşivden silin (çünkü çok değişiyor ve dosyanın içeriğini etkilemiyor).
- Biçimlendirilmemiş metin değerlerini satır içi yapın (aksi takdirde bunlar, tek bir hücre değiştirilse bile dahili XML'de büyük değişikliklere neden olan bir arama tablosunda tutulur).
- Formüller içeren tüm hücrelerden değerleri silin (çünkü bunlar yalnızca sayfanın bir sonraki açılışında hesaplanabilir).
- Çıkarılan zip arşiv içeriğini içeren bir *. Ayıklanmış alt klasör oluşturun.
Açıkçası, bunların hepsi gerekli değildir, ancak sonuç, yine de Excel'de açılacak, ancak farklılaşmaya ve artımlı sıkıştırmaya çok daha uygun olan bir elektronik tablo dosyasıdır. Ayrıca, çıkarılan dosyaların saklanması da sürüm geçmişinde her sürümde hangi değişikliklerin uygulandığını çok daha açık hale getirir.
Dışarıda herhangi bir iştah varsa, aracı daha yapılandırılabilir hale getirmekten mutluluk duyuyorum çünkü herkes içeriğin çıkarılmasını veya muhtemelen formül hücrelerinden değerlerin çıkarılmasını istemeyecek, ancak bunların ikisi de şu anda benim için çok yararlı.
Testlerde, 2 MB tablo ortaya koyarken, 21 MB, ama sonra etkili bir şekilde kullanarak sürümleri arasındaki farkları 1.9 MB Mercurial veri dosyasındaki her arasındaki küçük değişikliklerle bunun beş sürümlerini depolamak ve görselleştirmek başardı ötesinde karşılaştırın içinde metin modu.
Not: Mercurial kullanmama rağmen, çözümümü araştırırken bu soruyu okudum ve çözümle ilgili Mercurial'e özgü hiçbir şey yok, Git veya başka herhangi bir VCS için düzgün çalışmamalı.