Question

Nous avons beaucoup de feuilles de calcul (xls) dans notre référentiel de code source. Celles-ci sont généralement éditées avec gnumeric ou openoffice.org et sont principalement utilisées pour renseigner des bases de données pour les tests unitaires avec dbUnit . À ma connaissance, il n’existe pas de moyen facile de faire des différences sur les fichiers xls, ce qui rend la fusion extrêmement fastidieuse et source d’erreurs.

J'ai essayé de convertir les feuilles de calcul au format XML et de faire un diff régulier, mais il me semble vraiment que cela devrait être un dernier recours.

J'aimerais effectuer la différenciation (et la fusion) avec git comme avec les fichiers texte. Comment ferais-je cela, par exemple lors de l'émission git diff?

Était-ce utile?

La solution

Nous avons été confrontés exactement au même problème dans notre société. Nos tests produisent des classeurs Excel. Diff binaire n'était pas une option. Nous avons donc déployé notre propre outil de ligne de commande simple. Consultez le projet ExcelCompare . Enfait, cela nous permet d’automatiser assez bien nos tests. Les correctifs / demandes de fonctionnalités sont les bienvenus!

Autres conseils

Rapide et facile sans outils externes, fonctionne bien tant que les deux feuilles que vous comparez sont similaires:

  • Créer une troisième feuille de calcul
  • Tapez =if(Sheet1!A1 <> Sheet2!A1, "X", "") dans la cellule en haut à gauche (ou équivalent: cliquez sur les cellules réelles pour que les références soient automatiquement insérées dans la formule)
  • Ctrl + C (copier), Ctrl + A (tout sélectionner), Ctrl + V (coller) pour remplir la feuille.

Si les feuilles sont similaires, cette feuille de calcul sera vide, à l'exception de quelques cellules contenant X, soulignant les différences. Décompressez à 40% pour voir rapidement ce qui est différent.

J'ai souvent comparé des classeurs Excel par le passé. Ma technique fonctionne très bien pour les classeurs contenant de nombreuses feuilles de calcul, mais elle compare uniquement le contenu des cellules, pas le formatage des cellules, les macros, etc. De plus, certains codages sont nécessaires, mais cela en vaut la peine si vous devez comparer plusieurs fichiers volumineux à plusieurs reprises. Voici comment cela fonctionne:

A) Ecrivez 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 & Quot; MyWorksheet.tsv & Quot;) 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 " ;. Je l'ai fait en Java à l'aide d'une bibliothèque appelée JExcelAPI . C'est vraiment très facile.

B) Ajoutez une extension de shell Windows pour exécuter votre nouveau programme Java à partir de l'étape A en cliquant avec le bouton droit de la souris sur un fichier Excel. Cela rend très facile l’exécution de ce programme. Vous devez savoir comment faire cela, mais c'est aussi simple que d'écrire un fichier * .reg.

C) Obtenez BeyondCompare . Il possède une fonctionnalité très intéressante permettant de comparer des données délimitées en les affichant dans un joli tableau, voir la 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. Maintenant, utilisez BeyondCompare (BC) pour comparer les dossiers. Chaque fichier représente une feuille de calcul. Par conséquent, s’il existe des différences dans une feuille de calcul, BC le montrera et vous pourrez effectuer une analyse approfondie et une comparaison de fichiers. La Colombie-Britannique montrera la comparaison dans une jolie table, et vous pourrez masquer les lignes et les colonnes qui ne vous intéressent pas.

Vous pouvez essayer cet outil en ligne gratuit - www.cloudyexcel.com/compare-excel/

Cela donne un bon rendu visuel en ligne, en termes de lignes ajoutées, supprimées, modifiées, etc.

entrer la description de l'image ici

De plus, vous ne devez rien installer.

J'ai trouvé le plugin WinMerge de xdocdiff . Il s’agit d’un plugin pour WinMerge ( OpenSource et Freeware , vous n’avez pas besoin d’écrire un VBA ni d’enregistrer un fichier Excel au format csv ou xml). Cela ne fonctionne que pour le contenu du disque.

Ce plugin prend également en charge:

  • .rtf Rich Text
  • .docx / .docm Microsoft WORD 2007 (OOXML)
  • .xlsx / .xlsm Microsoft Excel 2007 (OOXML)
  • .pptx / .pptm Microsoft PowerPoint 2007 (OOXML)
  • .doc Microsoft WORD versions 5.0 / 95/97/2000 / XP / 2003
  • .xls Microsoft Excel versions 5.0 / 95/97/2000 / XP / 2003
  • .ppt Microsoft PowerPoint 97/2000 / XP / 2003
  • .sxw / .sxc / .sxi / .sxd OpenOffice.org
  • .odt / .ods / .odp / .odg Ouvrir le document
  • .wj2 / wj3 / wk3 / wk4 / 123 Lotus 123
  • .wri Windows3.1 Write
  • .pdf Adobe PDF
  • Archives Web .mht
  • .eml Fichiers exportés à partir de OutlookExpress

Regard, Andres

Hmmm. Dans le menu Excel, choisissez Fenêtre - & Gt; Comparer côte à côte?

Utilisez-vous TortoiseSVN pour effectuer vos commits et mises à jour dans Subversion? Il a un outil de diff, mais comparer des fichiers Excel n’est toujours pas très convivial. 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 > Tortue SVN & Gt; Afficher le journal & Gt; sélectionnez la révision > Cliquez avec le bouton droit de la souris sur & "; Comparez avec la copie de travail &";

Je sais que plusieurs réponses ont suggéré d'exporter le fichier au format csv ou d'un autre format de texte, puis de les comparer. Je ne l'ai pas vu spécifiquement mentionné, mais Beyond Compare 3 prend en charge un certain nombre de formats de fichiers supplémentaires. Voir Formats de fichier supplémentaires . En utilisant l'un des formats de fichier Microsoft Excel, vous pouvez facilement comparer deux fichiers Excel sans passer par l'option d'exportation vers un autre format.

Les nouvelles versions de MS Office sont fournies avec Comparaison de feuille de calcul , qui effectue un diff très agréable dans une interface graphique. Il détecte la plupart des types de changements.

Il existe une bibliothèque daff (abréviation de diff de données) qui permet de comparer des tableaux, de produire une résumé de leurs diffs, et en utilisant un tel résumé en tant que fichier de correctif.

Il est écrit en Haxe pour pouvoir être compilé dans les principaux langages.

J'ai créé un outil Excel Diff en Javascript avec l'aide de cette bibliothèque. Cela fonctionne bien avec les nombres & Amp; petites chaînes mais la sortie n'est pas idéale pour les longues chaînes (par exemple, une phrase longue avec un changement de caractère mineur).

Utilisez Altova DiffDog

Utilisez le mode diff XML et la vue en grille de diffdog pour examiner les différences dans un format tabulaire facile à lire. Diffuser le texte est BEAUCOUP PLUS DUR pour les feuilles de calcul de toute complexité. Avec cet outil, au moins deux méthodes sont utilisables dans diverses circonstances.

  1. Enregistrer sous .xml

    Pour détecter les différences entre une feuille de calcul simple et une feuille, enregistrez les feuilles de calcul Excel pour les comparer au format XML Spreadsheet 2003 avec une extension .xml.

  2. Enregistrer sous .xlsx

    Pour détecter les différences entre la plupart des feuilles de calcul dans un modèle de document modulaire, enregistrez les feuilles de calcul Excel à comparer sous forme de classeur Excel au format .xlsx. Ouvrez les fichiers à diff avec diffdog. Il vous informe que le fichier est une archive ZIP et vous demande si vous souhaitez l'ouvrir pour la comparaison de répertoires. En acceptant la comparaison d'annuaire, il devient relativement simple de cliquer deux fois sur des parties logiques du document pour les différencier (avec le mode diff XML). 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 comparer différentes feuilles afin de centrer l’analyse sur les zones connues pour avoir changé.

La propension d’Excel à modifier certains noms d’attributs à chaque enregistrement est ennuyeuse, mais les fonctionnalités de diffding XML de diffdog incluent la possibilité de filtrer certains types de différences. Par exemple, les feuilles de calcul Excel au format XML contiennent row et c des éléments dotés d'attributs s (style) qui sont renommés à chaque enregistrement. La configuration d’un filtre tel que c:s facilite la visualisation des modifications de contenu.

diffdog a beaucoup de capacités différentes. J'ai énuméré les modes de diff XML simplement parce que je n'ai pas utilisé un autre outil qui me plaisait mieux pour différencier des documents Excel.

J'utiliserais le format de fichier SYLK si l'exécution de diffs est importante. C'est un format texte qui devrait rendre les comparaisons plus faciles et plus compactes qu'un format binaire. Il est également compatible avec Excel, Gnumeric et OpenOffice.org. Par conséquent, les trois outils doivent pouvoir fonctionner ensemble. Article Wikipedia SYLK

J'ai trouvé une macro openoffice ici qui invoquera Les documents de comparaison d'openoffice fonctionnent sur deux fichiers. Malheureusement, la comparaison entre les feuilles de calcul d'openoffice semble un peu floue; Le bouton "Tout rejeter" vient d’être inséré dans mon document avec une colonne superflue.

plugin xdocdiff pour SVN

Si vous utilisez Java, vous pouvez essayer simple-excel .

Il diffère les feuilles de calcul à l'aide d'appariements Hamcrest et génère un résultat similaire.

java.lang.AssertionError:
Expected: entire workbook to be equal
     but: cell at "C14" contained <"bananas"> expected <nothing>,
          cell at "C15" contained <"1,850,000 EUR"> expected <"1,850,000.00 EUR">,
          cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00">
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)

Je dois dire que nous avons écrit cet outil (comme la réponse cochée a été lancée).

Si vous avez TortoiseSVN, vous pouvez CTRL cliquer sur les deux fichiers pour les sélectionner dans l'Explorateur Windows, puis cliquer avec le bouton droit de la souris sur TortoiseSVN - > Diff.

Cela fonctionne particulièrement bien si vous souhaitez modifier légèrement un grand ensemble de données.

J'ai le problème comme vous, alors j'ai décidé d'écrire un petit outil pour m'aider. Vérifiez sur ExcelDiff_Tools . Il comporte plusieurs points clés:

  • Prendre en charge xls, xlsx, xlsm.
  • Avec cellule de formule. Il comparera à la fois la formule et la valeur.
  • J'essaie de faire en sorte que l'interface utilisateur ressemble à une visionneuse de texte diff standard avec: statut modifié, supprimé, ajouté, inchangé. S'il vous plaît jeter un oeil avec l'image ci-dessous par exemple: entrer la description de l'image ici

Le document Diff peut être ce que vous recherchez.

  
      
  • Comparez les documents MS Word (DOC, DOCX, etc.), Excel, PDF, RTF, Texte, HTML, XML, PowerPoint ou Wordperfect et conservez la mise en forme
  •   
  • Choisissez une partie d'un document (fichier) et comparez-la à une partie du même document ou d'un autre (fichier).
  •   

Je ne connais aucun outil, mais il y a deux solutions qui vous viennent à l'esprit, toutes deux nécessitent Excel:

  1. Vous pouvez écrire du code VBA qui parcourt chaque feuille de calcul, ligne, colonne et cellule des deux classeurs, en signalant les différences.

  2. Si vous utilisez Excel 2007, vous pouvez enregistrer les classeurs au format Open-XML (* .xlsx), extraire le code XML et le différencier. Le fichier Open-XML est essentiellement un fichier .zip de fichiers .xml et de manifestes.

Vous allez vous retrouver avec beaucoup de " noise " dans les deux cas, si vos feuilles de calcul ne sont pas structurelles & "; fermez &"; pour commencer.

Convertissez les fichiers au format cvs, puis chargez-les sur un système de contrôle de version, puis utilisez diff avec un outil de contrôle de version avancé. Quand j’ai utilisé, il avait forcément un excellent outil de diff, mais j’en ai oublié le nom.

Je suis le 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 solution de rechange.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top