Nous avons beaucoup de feuilles de calcul (xls) dans notre référentiel de code source. Ceux-ci sont généralement édités avec gnumeric ou openoffice.org, et sont principalement utilisés pour remplir les bases de données pour les tests unitaires avec dbUnit . Il n'y a pas de moyens faciles de faire des différences sur les fichiers xls que je connaisse, ce qui rend la fusion extrêmement fastidieuse et sujette aux erreurs.
J'ai essayé de convertir les feuilles de calcul en xml et de faire une comparaison régulière, mais j'ai vraiment l'impression que cela devrait être un dernier recours.
Je voudrais effectuer la différence (et la fusion) avec git
comme je le fais avec des fichiers texte. Comment procéder, par exemple lors de l'émission git diff
?
git diff
etgitk
Réponses:
Nous avons fait face exactement au même problème dans notre co. Nos tests produisent des classeurs Excel. La différence binaire n'était pas une option. Nous avons donc déployé notre propre outil de ligne de commande simple. Découvrez le projet ExcelCompare . En fait, cela nous permet d'automatiser nos tests assez bien. Les demandes de correctifs / fonctionnalités sont les bienvenues!
la source
Rapide et facile sans outils externes, fonctionne bien tant que les deux feuilles que vous comparez sont similaires:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
dans la cellule en haut à gauche (ou équivalent: cliquez sur les cellules réelles pour avoir automatiquement les références insérées dans la formule)Si les feuilles sont similaires, cette feuille de calcul sera vide à l'exception de quelques cellules avec X en elles, mettant en évidence les différences. Dézoomez à 40% pour voir rapidement ce qui est différent.
la source
=Sheet1!A1=Sheet2!A1
. Cela affichera TRUE ou FALSE. Vous pouvez ensuite effectuer un formatage conditionnel=countif(A1:B2, FALSE)
ou quelque chose de similaire.J'ai beaucoup comparé des classeurs Excel dans le passé. Ma technique fonctionne très bien pour les classeurs avec de nombreuses feuilles de calcul, mais elle ne compare que le contenu des cellules, pas le formatage des cellules, les macros, etc. Voici comment ça fonctionne:
A) Écrivez un programme de vidage simple qui parcourt toutes les feuilles de calcul et enregistre toutes les données dans des fichiers séparés par des tabulations. Créez un fichier par feuille de calcul (utilisez le nom de la feuille de calcul comme nom de fichier, par exemple "MyWorksheet.tsv"), et créez un nouveau dossier pour ces fichiers à chaque fois que vous exécutez le programme. Nommez le dossier après le nom de fichier Excel et ajoutez un horodatage, par exemple "20080922-065412-MyExcelFile". J'ai fait cela en Java en utilisant une bibliothèque appelée JExcelAPI . C'est vraiment assez simple.
B) Ajoutez une extension de shell Windows pour exécuter votre nouveau programme Java à partir de l'étape A lorsque vous cliquez avec le bouton droit sur un fichier Excel. Cela rend très facile l'exécution de ce programme. Vous devez savoir comment faire sur Google, mais c'est aussi simple que d'écrire un fichier * .reg.
C) Obtenez BeyondCompare . Il a une fonctionnalité très intéressante pour comparer des données délimitées en les affichant dans un joli tableau, voir capture d'écran .
D) Vous êtes maintenant prêt à comparer facilement des fichiers Excel. Cliquez avec le bouton droit sur le fichier Excel 1 et exécutez votre programme de vidage. Il créera un dossier avec un fichier par feuille de calcul. Cliquez avec le bouton droit sur le fichier Excel 2 et exécutez votre programme de vidage. Il créera un deuxième dossier avec un fichier par feuille de calcul. Utilisez maintenant BeyondCompare (BC) pour comparer les dossiers. Chaque fichier représente une feuille de calcul, donc s'il y a des différences dans une feuille de calcul, BC l'affichera et vous pourrez explorer et faire une comparaison de fichiers. BC affichera la comparaison dans une belle mise en page de tableau et vous pourrez masquer les lignes et les colonnes qui ne vous intéressent pas.
la source
Vous pouvez essayer cet outil en ligne gratuit - www.cloudyexcel.com/compare-excel/
Il donne une bonne sortie visuelle en ligne, en termes de lignes ajoutées, supprimées, modifiées, etc.
De plus, vous n'avez rien à installer.
la source
J'ai trouvé xdocdiff WinMerge Plugin . C'est un plugin pour WinMerge (à la fois OpenSource et Freeware , vous n'avez pas besoin d'écrire un VBA ni d'enregistrer un Excel en csv ou xml). Cela fonctionne uniquement pour le contenu du celd.
Ce plugin prend également en charge:
Regard, Andres
la source
Hmmm. Dans le menu Excel, choisissez Fenêtre -> Comparer côte à côte?
la source
Utilisez-vous TortoiseSVN pour faire vos commits et mises à jour en subversion? Il dispose d'un outil de comparaison, mais la comparaison de fichiers Excel n'est toujours pas vraiment conviviale. Dans mon environnement (Win XP, Office 2007), il ouvre deux fichiers Excel pour une comparaison côte à côte.
Cliquez avec le bouton droit sur le document> Tortoise SVN> Afficher le journal> sélectionnez la révision> faites un clic droit pour "Comparer avec la copie de travail".
la source
Les nouvelles versions de MS Office sont livrées avec Spreadsheet Compare , qui effectue une comparaison assez intéressante dans une interface graphique. Il détecte la plupart des types de changements.
la source
diff
fusion basée sur la ligne de commande , cet outil de comparaison de feuilles de calcul était parfait pour mes besoins (vérifier les différences entre la sortie d'automatisation OpenXML et la sortie d'automatisation Excel COM).Il existe une bibliothèque daff (abréviation de data diff) qui aide à comparer les tables, à produire un résumé de leurs différences et à utiliser un tel résumé comme fichier de correctif.
Il est écrit en Haxe, donc il peut être compilé dans les principales langues.
J'ai créé un Excel Diff Tool en Javascript avec l'aide de cette bibliothèque. Cela fonctionne bien avec les nombres et les petites chaînes, mais la sortie n'est pas idéale pour les longues chaînes (par exemple une longue phrase avec un changement de caractère mineur).
la source
Je sais que plusieurs réponses ont suggéré d'exporter le fichier vers csv ou un autre format de texte, puis de les comparer. Je ne l'ai pas vu mentionné spécifiquement, mais Beyond Compare 3 a un certain nombre de formats de fichiers supplémentaires qu'il prend en charge. Voir Formats de fichiers supplémentaires . En utilisant l'un des formats de fichier Microsoft Excel, vous pouvez facilement comparer deux fichiers Excel sans passer par l'exportation vers une autre option de format.
la source
J'utiliserais le format de fichier SYLK si l'exécution de diffs est importante. C'est un format basé sur du texte, ce qui devrait rendre les comparaisons plus faciles et plus compactes qu'un format binaire. Il est également compatible avec Excel, Gnumeric et OpenOffice.org, les trois outils devraient donc pouvoir fonctionner correctement ensemble. Article Wikipédia SYLK
la source
Utiliser Altova DiffDog
Utilisez le mode XML diff et la vue Grille de diffdog pour examiner les différences dans un format tabulaire facile à lire. La différence de texte est BEAUCOUP PLUS DIFFICILE pour les feuilles de calcul de toute complexité. Avec cet outil, au moins deux méthodes sont viables dans diverses circonstances.
Enregistrer sous .xml
Pour détecter les différences d'une feuille de calcul simple à une seule feuille, enregistrez les feuilles de calcul Excel à comparer en tant que feuille de calcul XML 2003 avec une extension .xml.
Enregistrer sous .xlsx
Pour détecter les différences de la plupart des feuilles de calcul dans un modèle de document modulaire, enregistrez les feuilles de calcul Excel à comparer en tant que classeur Excel au format .xlsx. Ouvrez les fichiers à comparer avec diffdog. Il vous informe que le fichier est une archive ZIP et vous demande si vous souhaitez l'ouvrir pour une comparaison de répertoires. En acceptant la comparaison de répertoires, il devient relativement simple de double-cliquer sur les parties logiques du document pour les différencier (avec le mode XML diff). La plupart des parties du document .xslx sont des données au format XML. La vue en grille est extrêmement utile. Il est simple de différencier des feuilles individuelles pour concentrer l'analyse sur des domaines connus pour avoir changé.
La propension d'Excel à modifier certains noms d'attributs à chaque sauvegarde est ennuyeuse, mais les capacités de diff'ing XML de diffdog incluent la possibilité de filtrer certains types de différences. Par exemple, les feuilles de calcul Excel sous forme XML contiennent
row
et desc
éléments qui ont dess
attributs (style) qui renommage avec chaque enregistrement. La configuration d'un filtre comme celuic:s
-ci facilite la visualisation uniquement des modifications de contenu.diffdog a beaucoup de capacités différentes. J'ai répertorié les modes de diff XML uniquement parce que je n'ai pas utilisé un autre outil que j'aimais mieux pour différencier les documents Excel.
la source
J'ai trouvé ici une macro openoffice qui invoquera la fonction de comparaison de documents d'openoffice sur deux fichiers. Malheureusement, la comparaison de la feuille de calcul openoffice semble un peu floconneuse; Je viens d'avoir le bouton «Tout rejeter» pour insérer une colonne superflue dans mon document.
la source
plugin xdocdiff pour SVN
la source
Si vous utilisez Java, vous pouvez essayer simple-excel .
Il diffère les feuilles de calcul en utilisant des matchers Hamcrest et affiche quelque chose comme ça.
Je devrais préciser que nous avons écrit cet outil (comme la réponse cochée a obtenu la leur).
la source
Si vous avez TortoiseSVN, vous pouvez CTRLcliquer sur les deux fichiers pour les sélectionner dans l'Explorateur Windows, puis cliquer avec le bouton droit sur TortoiseSVN-> Diff.
Cela fonctionne particulièrement bien si vous recherchez un petit changement dans un grand ensemble de données.
la source
J'ai le problème comme toi alors je décide d'écrire un petit outil pour m'aider. Veuillez vérifier ExcelDiff_Tools . Il comporte plusieurs points clés:
la source
Je suis co-auteur d'une extension Git gratuite et open source:
https://github.com/ZoomerAnalytics/git-xltrail
Cela permet à Git de fonctionner avec n'importe quel format de fichier de classeur Excel sans aucune solution de contournement.
la source
Diff Doc est peut-être ce que vous recherchez.
la source
Je ne connais aucun outil, mais il y a deux solutions à rouler soi-même qui me viennent à l'esprit, toutes deux nécessitent Excel:
Vous pouvez écrire du code VBA qui parcourt chaque feuille de calcul, ligne, colonne et cellule des deux classeurs, en signalant les différences.
Si vous utilisez Excel 2007, vous pouvez enregistrer les classeurs au format Open-XML (* .xlsx), extraire le XML et le comparer. Le fichier Open-XML est essentiellement un fichier .zip de fichiers .xml et de manifestes.
Vous vous retrouverez avec beaucoup de «bruit» dans les deux cas si vos feuilles de calcul ne sont pas structurellement «proches» pour commencer.
la source
Convertissez en cvs puis téléchargez dans un système de contrôle de version puis différez avec un outil de comparaison de version avancé. Quand j'ai utilisé forcément, il y avait un excellent outil de comparaison, mais j'en oublie le nom.
la source