W naszym repozytorium kodu źródłowego mamy wiele arkuszy kalkulacyjnych (xls). Są one zwykle edytowane za pomocą gnumeric lub openoffice.org i są najczęściej używane do zapełniania baz danych do testów jednostkowych za pomocą dbUnit . Nie ma łatwych sposobów robienia różnic na plikach xls, o których wiem, a to sprawia, że scalanie jest niezwykle żmudne i podatne na błędy.
Próbowałem przekonwertować arkusze kalkulacyjne do formatu xml i zrobić zwykły diff, ale naprawdę wydaje się, że to ostatnia deska ratunku.
Chciałbym przeprowadzić porównywanie (i scalanie) git
tak samo, jak robię to z plikami tekstowymi. Jak bym to zrobił, np. Przy wydawaniu git diff
?
git diff
igitk
Odpowiedzi:
Dokładnie ten sam problem napotkaliśmy w naszej współpracy. Nasze testy generują skoroszyty programu Excel. Różnica binarna nie wchodziła w grę. Dlatego wprowadziliśmy nasze własne proste narzędzie wiersza poleceń. Sprawdź projekt ExcelCompare . W rzeczywistości pozwala nam to całkiem ładnie zautomatyzować nasze testy. Prośby o poprawki / funkcje są mile widziane!
źródło
Szybko i łatwo bez zewnętrznych narzędzi, działa dobrze, o ile dwa porównywane arkusze są podobne:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
w lewą górną komórkę (lub równoważną: kliknij rzeczywiste komórki, aby automatycznie wstawić odniesienia do formuły)Jeśli arkusze są podobne, ten arkusz kalkulacyjny będzie pusty, z wyjątkiem kilku komórek z X, co podkreśla różnice. Zmniejsz powiększenie do 40%, aby szybko zobaczyć, co się zmieniło.
źródło
=Sheet1!A1=Sheet2!A1
. Spowoduje to wydrukowanie TRUE lub FALSE. Następnie możesz wykonać formatowanie warunkowe=countif(A1:B2, FALSE)
lub coś podobnego.W przeszłości wiele razy porównywałem skoroszyty programu Excel. Moja technika działa bardzo dobrze w przypadku skoroszytów z wieloma arkuszami roboczymi, ale porównuje tylko zawartość komórek, a nie formatowanie komórek, makra itp. Jest też zaangażowane pewne kodowanie, ale warto, jeśli musisz wielokrotnie porównywać wiele dużych plików. Oto jak to działa:
A) Napisz prosty program zrzutowy, który przechodzi przez wszystkie arkusze i zapisuje wszystkie dane w plikach rozdzielonych tabulatorami. Utwórz jeden plik na arkusz (użyj nazwy arkusza jako nazwy pliku, np. „MyWorksheet.tsv”) i utwórz nowy folder dla tych plików za każdym razem, gdy uruchamiasz program. Nazwij folder po nazwie pliku programu Excel i dodaj sygnaturę czasową, np. „20080922-065412-MyExcelFile”. Zrobiłem to w Javie, używając biblioteki o nazwie JExcelAPI . To naprawdę całkiem proste.
B) Dodaj rozszerzenie powłoki systemu Windows, aby uruchomić nowy program Java od kroku A po kliknięciu prawym przyciskiem myszy pliku Excel. To sprawia, że uruchomienie tego programu jest bardzo łatwe. Potrzebujesz Google, jak to zrobić, ale jest to tak proste, jak napisanie pliku * .reg.
C) Uzyskaj BeyondCompare . Ma bardzo fajną funkcję porównywania ograniczonych danych, pokazując je w ładnej tabeli, patrz zrzut ekranu .
D) Teraz możesz z łatwością porównywać pliki Excela. Kliknij prawym przyciskiem myszy plik Excel 1 i uruchom program zrzutowy. Utworzy folder z jednym plikiem na arkusz roboczy. Kliknij prawym przyciskiem myszy plik Excela 2 i uruchom program zrzutowy. Utworzy drugi folder z jednym plikiem na arkusz roboczy. Teraz użyj BeyondCompare (BC), aby porównać foldery. Każdy plik reprezentuje arkusz roboczy, więc jeśli istnieją różnice w arkuszu, BC to pokaże i możesz przejść do szczegółów i przeprowadzić porównanie plików. BC pokaże porównanie w ładnym układzie tabeli i możesz ukryć wiersze i kolumny, które Cię nie interesują.
źródło
Możesz wypróbować to bezpłatne narzędzie online - www.cloudyexcel.com/compare-excel/
Daje dobry efekt wizualny online, pod względem dodanych, usuniętych, zmienionych wierszy itp.
Ponadto nie musisz niczego instalować.
źródło
Znalazłem wtyczkę xdocdiff WinMerge . Jest to wtyczka do WinMerge (zarówno OpenSource, jak i Freeware , nie musisz pisać VBA ani zapisywać excela do csv lub xml). Działa tylko dla zawiera celd.
Ta wtyczka obsługuje również:
Pozdrawiam, Andres
źródło
Hmmm. Z menu Excela wybierz Okno -> Porównaj obok siebie?
źródło
Czy używasz TortoiseSVN do wykonywania zatwierdzeń i aktualizacji w Subversion? Ma narzędzie do porównywania, jednak porównywanie plików Excela nadal nie jest przyjazne dla użytkownika. W moim środowisku (Win XP, Office 2007) otwiera dwa pliki Excela do porównania.
Kliknij prawym przyciskiem myszy dokument> Tortoise SVN> Pokaż dziennik> wybierz wersję> kliknij prawym przyciskiem myszy „Porównaj z kopią roboczą”.
źródło
Nowsze wersje MS Office są wyposażone w funkcję Porównywanie arkuszy kalkulacyjnych , która wykonuje całkiem niezłą różnicę w GUI. Wykrywa większość rodzajów zmian.
źródło
diff
scalaniu opartym na wierszu poleceń , to narzędzie porównywania arkuszy kalkulacyjnych było idealne do moich celów (sprawdzanie różnic między wynikami automatyzacji OpenXML a danymi wyjściowymi automatyzacji Excel COM).Istnieje biblioteka daff (skrót od data diff), która pomaga w porównywaniu tabel, tworzeniu podsumowania ich różnic i używaniu takiego podsumowania jako pliku łatki.
Jest napisany w języku Haxe, więc można go skompilować w głównych językach.
Stworzyłem narzędzie Excel Diff w Javascript z pomocą tej biblioteki. Działa dobrze z liczbami i małymi ciągami, ale wynik nie jest idealny dla długich ciągów (np. Długiego zdania z niewielkimi zmianami znaków).
źródło
Wiem, że kilka odpowiedzi sugerowało wyeksportowanie pliku do csv lub innego formatu tekstowego, a następnie porównanie ich. Nie widziałem tego konkretnie, ale Beyond Compare 3 ma wiele dodatkowych formatów plików, które obsługuje. Zobacz Dodatkowe formaty plików . Korzystając z jednego z formatów plików programu Microsoft Excel, można łatwo porównać dwa pliki programu Excel bez konieczności eksportowania do innej opcji formatu.
źródło
Użyłbym formatu pliku SYLK, jeśli ważne jest wykonywanie różnic. Jest to format tekstowy, dzięki czemu porównania powinny być łatwiejsze i bardziej zwarte niż format binarny. Jest również kompatybilny z Excel, Gnumeric i OpenOffice.org, więc wszystkie trzy narzędzia powinny dobrze ze sobą współpracować. Artykuł SYLK w Wikipedii
źródło
Użyj Altova DiffDog
Użyj trybu różnicowania XML diffdog i widoku siatki, aby przejrzeć różnice w łatwym do odczytania formacie tabelarycznym. Różnicowanie tekstu jest DUŻO TRUDNIEJSZE w przypadku arkuszy kalkulacyjnych o dowolnej złożoności. Dzięki temu narzędziu co najmniej dwie metody są możliwe w różnych okolicznościach.
Zapisz jako .xml
Aby wykryć różnice w prostym, jednoarkuszowym arkuszu kalkulacyjnym, zapisz arkusze kalkulacyjne programu Excel w celu porównania jako arkusz kalkulacyjny XML 2003 z rozszerzeniem .xml.
Zapisz jako .xlsx
Aby wykryć różnice między większością arkuszy kalkulacyjnych w modelu dokumentu modułowego, zapisz arkusze kalkulacyjne programu Excel w celu porównania jako skoroszyt programu Excel w formacie .xlsx. Otwórz pliki do porównania z diffdog. Informuje, że plik jest archiwum ZIP i pyta, czy chcesz go otworzyć w celu porównania katalogów. Po wyrażeniu zgody na porównanie katalogów staje się stosunkowo prostą kwestią dwukrotnego kliknięcia logicznych części dokumentu w celu ich porównania (w trybie porównywania XML). Większość części dokumentu .xslx to dane w formacie XML. Widok siatki jest niezwykle przydatny. Łatwo jest odróżnić poszczególne arkusze, aby skupić analizę na obszarach, o których wiadomo, że uległy zmianie.
Skłonność Excela do modyfikowania niektórych nazw atrybutów przy każdym zapisie jest irytująca, ale możliwości różnicowania XML przez diffdog obejmują możliwość filtrowania pewnych rodzajów różnic. Na przykład, arkusze kalkulacyjne Excel w postaci XML zawierają
row
ic
elementy, które mająs
atrybutów (styl), które Zmień nazwę przy każdym zapisywaniu. Skonfigurowanie takiego filtrac:s
znacznie ułatwia przeglądanie tylko zmian treści.diffdog ma wiele możliwości różnicowania. Wymieniłem tryby różnic XML tylko dlatego, że nie korzystałem z innego narzędzia, które bardziej mi się podobało, jeśli chodzi o różnicowanie dokumentów Excel.
źródło
Znalazłem tutaj makro openoffice , które wywoła funkcję porównywania dokumentów openoffice na dwóch plikach. Niestety, porównanie arkusza kalkulacyjnego openoffice wydaje się trochę niepewne; Właśnie kazałem przyciskowi „Odrzuć wszystko” wstawić zbędną kolumnę w moim dokumencie.
źródło
Wtyczka xdocdiff dla SVN
źródło
Jeśli używasz Javy, możesz spróbować simple-excel .
Porówna arkusze kalkulacyjne za pomocą dopasowań Hamcrest i wyświetli coś takiego.
Powinienem zakwalifikować, że napisaliśmy to narzędzie (tak jak zaznaczona odpowiedź wyrzuciła własną).
źródło
Jeśli masz TortoiseSVN, możesz CTRLkliknąć dwa pliki, aby wybrać je w Eksploratorze Windows, a następnie kliknąć prawym przyciskiem myszy, TortoiseSVN-> Porównaj.
Działa to szczególnie dobrze, jeśli szukasz niewielkiej zmiany w dużym zestawie danych.
źródło
Mam problem tak jak Ty, więc zdecydowałem się napisać małe narzędzie, które mi pomoże. Proszę sprawdzić ExcelDiff_Tools . Zawiera kilka kluczowych punktów:
źródło
Jestem współautorem darmowego rozszerzenia Git o otwartym kodzie źródłowym:
https://github.com/ZoomerAnalytics/git-xltrail
Dzięki temu Git działa z dowolnym formatem pliku skoroszytu programu Excel bez żadnych obejść.
źródło
Diff Doc może być tym, czego szukasz.
źródło
Nie znam żadnych narzędzi, ale przychodzą mi do głowy dwa rozwiązania typu roll-your-own, oba wymagają Excela:
Możesz napisać kod VBA, który przechodzi przez każdy arkusz roboczy, wiersz, kolumnę i komórkę w dwóch skoroszytach, zgłaszając różnice.
Jeśli używasz programu Excel 2007, możesz zapisać skoroszyty w formacie Open-XML (* .xlsx), wyodrębnić XML i porównać to. Plik Open-XML to po prostu plik .zip zawierający pliki .xml i manifesty.
W obu przypadkach skończysz z dużym „szumem”, jeśli Twoje arkusze kalkulacyjne nie są strukturalnie „zamknięte” na początku.
źródło
Konwertuj na cvs, a następnie prześlij do systemu kontroli wersji, a następnie porównaj za pomocą zaawansowanego narzędzia do porównywania kontroli wersji. Kiedy używałem sił, było to świetne narzędzie do porównywania, ale zapomniałem jego nazwy.
źródło