Kami memiliki banyak spreadsheet (xls) di repositori kode sumber kami. Ini biasanya diedit dengan gnumeric atau openoffice.org, dan sebagian besar digunakan untuk mengisi basis data untuk pengujian unit dengan dbUnit . Tidak ada cara mudah untuk melakukan diff pada file xls yang saya ketahui, dan ini membuat penggabungan yang sangat membosankan dan rawan kesalahan.
Saya sudah mencoba mengubah spreadsheet menjadi xml dan melakukan diff biasa, tetapi rasanya seperti itu harus menjadi pilihan terakhir.
Saya ingin melakukan pembedaan (dan penggabungan) dengan yang git
saya lakukan dengan file teks. Bagaimana saya melakukan ini, misalnya saat menerbitkan git diff
?
git diff
dangitk
Jawaban:
Kami menghadapi masalah yang sama persis di perusahaan kami. Hasil tes kami unggul dalam buku kerja. Biner diff bukan pilihan. Jadi kami meluncurkan alat baris perintah sederhana kami sendiri. Lihat proyek ExcelCompare . Infact ini memungkinkan kita untuk mengotomatisasi pengujian kita dengan cukup baik. Permintaan tambalan / fitur cukup disambut!
sumber
Cepat dan mudah tanpa alat eksternal, berfungsi dengan baik selama dua lembar yang Anda bandingkan serupa:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
sel kiri atas (atau setara: klik pada sel yang sebenarnya untuk secara otomatis memasukkan referensi ke dalam rumus)Jika lembar serupa, spreadsheet ini akan kosong kecuali untuk beberapa sel dengan X di dalamnya, menyoroti perbedaan. Unzoom ke 40% untuk dengan cepat melihat apa yang berbeda.
sumber
=Sheet1!A1=Sheet2!A1
. Ini akan mencetak BENAR atau SALAH. Anda kemudian dapat melakukan pemformatan bersyarat atau=countif(A1:B2, FALSE)
atau yang serupa.Saya telah melakukan banyak pembandingan buku kerja Excel di masa lalu. Teknik saya bekerja sangat baik untuk buku kerja dengan banyak lembar kerja, tetapi hanya membandingkan konten sel, tidak memformat sel, makro, dll. Juga, ada beberapa pengkodean yang terlibat tetapi ada baiknya jika Anda harus membandingkan banyak file besar berulang kali. Begini cara kerjanya:
A) Tulis program dump sederhana yang melangkah melalui semua lembar kerja dan menyimpan semua data ke file yang dipisahkan dengan tab. Buat satu file per lembar kerja (gunakan nama lembar kerja sebagai nama file, misalnya "MyWorksheet.tsv"), dan buat folder baru untuk file ini setiap kali Anda menjalankan program. Beri nama folder setelah nama file excel dan tambahkan stempel waktu, mis. "20080922-065412-MyExcelFile". Saya melakukan ini di Jawa menggunakan perpustakaan yang disebut JExcelAPI . Ini sangat mudah.
B) Tambahkan ekstensi shell Windows untuk menjalankan program Java baru Anda dari langkah A ketika mengklik kanan pada file Excel. Ini membuatnya sangat mudah untuk menjalankan program ini. Anda perlu Google cara melakukan ini, tetapi semudah menulis file * .reg.
C) Dapatkan BeyondCompare . Ini memiliki fitur yang sangat keren untuk membandingkan data yang dibatasi dengan menunjukkannya dalam tabel yang bagus, lihat tangkapan layar .
D) Anda sekarang siap untuk membandingkan file Excel dengan mudah. Klik kanan pada file Excel 1 dan jalankan program dump Anda. Ini akan membuat folder dengan satu file per lembar kerja. Klik kanan pada file Excel 2 dan jalankan program dump Anda. Ini akan membuat folder kedua dengan satu file per lembar kerja. Sekarang gunakan BeyondCompare (BC) untuk membandingkan folder. Setiap file mewakili lembar kerja, jadi jika ada perbedaan dalam lembar kerja BC akan menunjukkan ini dan Anda dapat menelusuri dan melakukan perbandingan file. BC akan menampilkan perbandingan dalam tata letak tabel yang bagus, dan Anda dapat menyembunyikan baris dan kolom yang tidak Anda minati.
sumber
Anda dapat mencoba alat online gratis ini - www.cloudyexcel.com/compare-excel/
Ini memberikan output visual yang bagus secara online, dalam hal baris ditambahkan, dihapus, diubah dll.
Plus Anda tidak perlu menginstal apa pun.
sumber
Saya telah menemukan Plugin xdocdiff WinMerge . Ini adalah plugin untuk WinMerge (baik OpenSource dan Freeware , Anda tidak perlu menulis VBA atau menyimpan excel ke csv atau xml). Ini berfungsi hanya untuk isi celd.
Plugin ini juga mendukung:
Salam, Andres
sumber
Hmmm. Dari menu Excel pilih Window -> Bandingkan berdampingan?
sumber
Apakah Anda menggunakan TortoiseSVN untuk melakukan komit dan pembaruan dalam subversi? Ini memiliki alat diff, namun membandingkan file Excel masih belum benar-benar user friendly Di lingkungan saya (Win XP, Office 2007), ini membuka dua file excel untuk perbandingan berdampingan.
Klik kanan dokumen> Tortoise SVN> Tampilkan Log> pilih revisi> klik kanan untuk "Bandingkan dengan copy pekerjaan".
sumber
Versi MS Office yang lebih baru hadir dengan Spreadsheet Compare , yang melakukan perbedaan cukup bagus dalam GUI. Mendeteksi sebagian besar jenis perubahan.
sumber
diff
penggabungan berbasis baris perintah , alat Spreadsheet Compare ini sempurna untuk tujuan saya (memeriksa perbedaan antara output otomatisasi OpenXML vs output otomatisasi Excel COM).Ada perpustakaan daff (kependekan dari data diff) yang membantu dalam membandingkan tabel, menghasilkan ringkasan dari perbedaan mereka, dan menggunakan ringkasan seperti itu sebagai file tambalan.
Itu ditulis dalam bahasa Haxe, sehingga dapat dikompilasi dalam bahasa utama.
Saya telah membuat Alat Excel Diff dalam Javascript dengan bantuan perpustakaan ini. Ini berfungsi baik dengan angka & string kecil tetapi outputnya tidak ideal untuk string panjang (misalnya kalimat panjang dengan perubahan karakter minor).
sumber
Saya tahu beberapa tanggapan menyarankan mengekspor file ke csv atau format teks lain, dan kemudian membandingkannya. Saya belum melihatnya disebutkan secara spesifik, tetapi Beyond Compare 3 memiliki sejumlah format file tambahan yang didukungnya. Lihat Format File Tambahan . Dengan menggunakan salah satu Format File Microsoft Excel Anda dapat dengan mudah membandingkan dua file Excel tanpa melalui ekspor ke opsi format lain.
sumber
Saya akan menggunakan format file SYLK jika melakukan diff penting. Ini adalah format berbasis teks, yang seharusnya membuat perbandingan lebih mudah dan lebih kompak daripada format biner. Ini kompatibel dengan Excel, Gnumeric, dan OpenOffice.org juga, jadi ketiga alat ini harus dapat bekerja dengan baik bersama. Artikel Wikipedia SYLK
sumber
Gunakan Altova DiffDog
Gunakan mode difdog's XML dan Grid View untuk meninjau perbedaan dalam format tabel yang mudah dibaca. Perbedaan teks adalah JAUH LEBIH KERAS untuk spreadsheet dengan kompleksitas apa pun. Dengan alat ini, setidaknya dua metode dapat digunakan dalam berbagai keadaan.
Simpan Sebagai .xml
Untuk mendeteksi perbedaan spreadsheet sederhana, satu lembar, simpan lembar kerja Excel untuk dibandingkan sebagai XML Spreadsheet 2003 dengan ekstensi .xml.
Simpan Sebagai .xlsx
Untuk mendeteksi perbedaan sebagian besar spreadsheet dalam model dokumen termodulasi, simpan lembar kerja Excel untuk dibandingkan sebagai Buku Kerja Excel dalam bentuk .xlsx. Buka file untuk diff dengan diffdog. Ini memberi tahu Anda bahwa file tersebut adalah arsip ZIP, dan menanyakan apakah Anda ingin membukanya untuk perbandingan direktori. Setelah menyetujui perbandingan direktori, ini menjadi masalah yang relatif sederhana yaitu mengklik dua kali bagian logis dari dokumen untuk membuatnya berbeda (dengan mode XML diff). Sebagian besar dokumen .xslx adalah data berformat XML. Tampilan Grid sangat berguna. Adalah sepele untuk membedakan lembar-lembar individual untuk memfokuskan analisis pada bidang-bidang yang diketahui telah berubah.
Kecenderungan Excel untuk mengutak-atik nama atribut tertentu dengan setiap penyimpanan menjengkelkan, tetapi kemampuan diffdog XML diffdog mencakup kemampuan untuk menyaring beberapa jenis perbedaan. Misalnya, lembar bentang Excel dalam formulir XML berisi
row
danc
elemen yang memilikis
atribut (gaya) yang diganti namanya dengan setiap penyimpanan. Menyiapkan filter sepertic:s
membuatnya lebih mudah untuk melihat hanya perubahan konten.diffdog memiliki banyak kemampuan diff'ing. Saya telah mendaftar mode XML diff hanya karena saya belum menggunakan alat lain yang saya sukai lebih baik ketika datang untuk membedakan dokumen Excel.
sumber
Saya menemukan makro openoffice di sini yang akan menjalankan fungsi bandingkan dokumen openoffice pada dua file. Sayangnya, perbandingan spreadsheet openoffice nampak sedikit serpihan; Saya baru saja tombol 'Tolak Semua' memasukkan kolom yang berlebihan di dokumen saya.
sumber
Plugin xdocdiff untuk SVN
sumber
Jika Anda menggunakan Java, Anda dapat mencoba excel sederhana .
Ini akan membedakan spreadsheet menggunakan pencocokan Hamcrest dan menghasilkan sesuatu seperti ini.
Saya harus memenuhi syarat bahwa kami menulis alat itu (seperti jawaban yang dicentang menggulung sendiri).
sumber
Jika Anda memiliki TortoiseSVN maka Anda dapat CTRLmengklik dua file untuk memilihnya di Windows Explorer dan kemudian klik kanan, TortoiseSVN-> Diff.
Ini bekerja sangat baik jika Anda mencari perubahan kecil dalam kumpulan data besar.
sumber
Saya punya masalah seperti Anda, jadi saya memutuskan untuk menulis alat kecil untuk membantu saya. Silakan periksa ExcelDiff_Tools . Itu datang dengan beberapa poin utama:
sumber
Saya adalah penulis bersama ekstensi Git gratis dan sumber terbuka:
https://github.com/ZoomerAnalytics/git-xltrail
Itu membuat Git bekerja dengan format file buku kerja Excel apa pun tanpa penyelesaian apa pun.
sumber
Diff Doc mungkin yang Anda cari.
sumber
Saya tidak tahu alat apa pun, tetapi ada dua solusi roll-your-sendiri yang muncul dalam pikiran, keduanya membutuhkan Excel:
Anda bisa menulis beberapa kode VBA yang melangkah melalui setiap Lembar Kerja, Baris, Kolom dan Sel dari dua Buku Kerja, melaporkan perbedaan.
Jika Anda menggunakan Excel 2007, Anda bisa menyimpan Workbooks sebagai format Open-XML (* .xlsx), ekstrak XML dan diff itu. File Open-XML pada dasarnya hanyalah file .zip dari file .xml dan manifes.
Anda akan berakhir dengan banyak "noise" dalam kedua kasus tersebut jika spreadsheet Anda secara struktural tidak "dekat" untuk memulai.
sumber
Konversikan ke cvs lalu unggah ke sistem kontrol versi lalu buktikan dengan alat kontrol versi lanjutan. Ketika saya menggunakan terpaksa, ia memiliki alat diff yang hebat, tapi saya lupa namanya.
sumber