Domanda

Abbiamo molti fogli di calcolo (xls) nel nostro repository di codice sorgente. Questi di solito sono modificati con gnumeric o openoffice.org e sono usati principalmente per popolare database per test unitari con dbUnit . Non ci sono modi semplici per fare differenze sui file xls che conosco, e questo rende la fusione estremamente noiosa e soggetta a errori.

Ho provato a convertire i fogli di calcolo in XML e a fare una diff normale, ma sembra davvero che debba essere l'ultima risorsa.

Vorrei eseguire il diffing (e l'unione) con git come faccio con i file di testo. Come lo farei, ad es. durante l'emissione di git diff?

È stato utile?

Soluzione

Abbiamo riscontrato lo stesso identico problema nel nostro co. I nostri test hanno prodotto eccellenti cartelle di lavoro. Il diff binario non era un'opzione. Quindi abbiamo implementato il nostro semplice strumento da riga di comando. Consulta il progetto ExcelCompare . Questo ci consente di automatizzare i nostri test abbastanza bene. Richieste di patch / funzionalità sono benvenute!

Altri suggerimenti

Facile e veloce senza strumenti esterni, funziona bene finché i due fogli che stai confrontando sono simili:

  • Crea un terzo foglio di calcolo
  • Digita =if(Sheet1!A1 <> Sheet2!A1, "X", "") nella cella in alto a sinistra (o equivalente: fai clic sulle celle effettive per inserire automaticamente i riferimenti nella formula)
  • Ctrl + C (copia), Ctrl + A (seleziona tutto), Ctrl + V (incolla) per riempire il foglio.

Se i fogli sono simili, questo foglio di calcolo sarà vuoto ad eccezione di alcune celle con X in essi, evidenziando le differenze. Unzoom al 40% per vedere rapidamente cosa è diverso.

Ho fatto molti confronti tra le cartelle di lavoro di Excel in passato. La mia tecnica funziona molto bene per le cartelle di lavoro con molti fogli di lavoro, ma confronta solo i contenuti delle celle, non la formattazione delle celle, le macro, ecc. Inoltre, c'è un po 'di codice in questione, ma vale la pena se devi confrontare molti file di grandi dimensioni ripetutamente. Ecco come funziona:

A) Scrivi un semplice programma di dump che passi attraverso tutti i fogli di lavoro e salvi tutti i dati in file separati da tabulazioni. Crea un file per foglio di lavoro (usa il nome del foglio di lavoro come nome file, ad es. & Quot; MyWorksheet.tsv & Quot;) e crea una nuova cartella per questi file ogni volta che esegui il programma. Assegna un nome alla cartella dopo il nome file Excel e aggiungi un timestamp, ad es. & Quot; & 20080922-065412-MyExcelFile quot ;. L'ho fatto in Java usando una libreria chiamata JExcelAPI . È davvero abbastanza semplice.

B) Aggiungi un'estensione della shell di Windows per eseguire il tuo nuovo programma Java dal passaggio A quando fai clic con il pulsante destro del mouse su un file Excel. Questo rende molto semplice eseguire questo programma. Devi fare come fare a Google, ma è facile come scrivere un file * .reg.

C) Ottieni BeyondCompare . Ha una funzione molto interessante per confrontare i dati delimitati mostrandoli in una bella tabella, vedi screenshot .

D) Ora sei pronto per confrontare facilmente i file Excel. Fare clic con il tasto destro del mouse sul file Excel 1 ed eseguire il programma di dump. Creerà una cartella con un file per foglio di lavoro. Fare clic con il tasto destro del mouse sul file Excel 2 ed eseguire il programma di dump. Creerà una seconda cartella con un file per foglio di lavoro. Ora usa BeyondCompare (BC) per confrontare le cartelle. Ogni file rappresenta un foglio di lavoro, quindi se ci sono differenze in un foglio di lavoro BC lo mostrerà e sarà possibile eseguire il drill down e fare un confronto dei file. BC mostrerà il confronto in un bel layout di tabella e puoi nascondere righe e colonne che non ti interessano.

Puoi provare questo strumento online gratuito - www.cloudyexcel.com/compare-excel/

Fornisce un buon output visivo online, in termini di righe aggiunte, cancellate, modificate ecc.

inserisci qui la descrizione dell'immagine

Inoltre non devi installare nulla.

Ho trovato xdocdiff WinMerge Plugin . È un plug-in per WinMerge (sia OpenSource che Freeware , non è necessario scrivere un VBA né salvare un Excel in CSV o XML). Funziona solo per i contenuti della cartella.

Questo plugin supporta anche:

  • .rtf Rich Text
  • .docx / .docm Microsoft WORD 2007 (OOXML)
  • .xlsx / .xlsm Microsoft Excel 2007 (OOXML)
  • .pptx / .pptm Microsoft PowerPoint 2007 (OOXML)
  • .doc Microsoft WORD ver5.0 / 95/97/2000 / XP / 2003
  • .xls Microsoft Excel ver5.0 / 95/97/2000 / XP / 2003
  • .ppt Microsoft PowerPoint 97/2000 / XP / 2003
  • .sxw / .sxc / .sxi / .sxd OpenOffice.org
  • .odt / .ods / .odp / .odg Apri documento
  • .wj2 / wj3 / wk3 / wk4 / 123 Lotus 123
  • .wri Windows3.1 Write
  • .pdf Adobe PDF
  • .mht Web Archive
  • .eml File esportati da OutlookExpress

Regard, Andres

Hmmm. Dal menu di Excel scegliere Finestra - & Gt; Confronta fianco a fianco?

Usi TortoiseSVN per eseguire i tuoi commit e gli aggiornamenti in sovversione? Ha uno strumento diff, tuttavia il confronto di file Excel non è ancora molto facile da usare. Nel mio ambiente (Win XP, Office 2007), apre due file Excel per il confronto fianco a fianco.

Documento clic destro > Tortoise SVN & Gt; Mostra registro & Gt; seleziona la revisione > fare clic con il tasto destro per " confrontare con la copia di lavoro " ;.

So che diverse risposte hanno suggerito di esportare il file in CSV o in qualche altro formato di testo, e quindi di confrontarli. Non l'ho visto menzionato in modo specifico, ma Beyond Compare 3 ha una serie di formati di file aggiuntivi che supporta. Vedi Formati di file aggiuntivi . Utilizzando uno dei formati di file di Microsoft Excel è possibile confrontare facilmente due file di Excel senza passare all'esportazione in un'altra opzione di formato.

Le versioni più recenti di MS Office includono Confronto foglio di calcolo , che esegue una differenza abbastanza piacevole in una GUI. Rileva la maggior parte dei cambiamenti.

Esiste una libreria daff (abbreviazione di data diff) che aiuta a confrontare le tabelle, producendo un riepilogo delle differenze e utilizzo di tale riepilogo come file patch.

È scritto in Haxe, quindi può essere compilato nelle principali lingue.

Ho creato un Excel Diff Tool in Javascript con l'aiuto di questa libreria. Funziona bene con i numeri & Amp; stringhe piccole ma l'output non è ideale per stringhe lunghe (ad esempio una frase lunga con una modifica di carattere minore).

Utilizza Altova DiffDog

Utilizza la modalità diff XML di diffdog e la vista griglia per rivedere le differenze in un formato tabulare di facile lettura. La differenza di testo è MOLTO DIFFICILE per fogli di calcolo di qualsiasi complessità. Con questo strumento, almeno due metodi sono praticabili in varie circostanze.

  1. Salva come .xml

    Per rilevare le differenze di un semplice foglio di calcolo a un foglio, salvare i fogli di calcolo Excel per confrontarli come XML Spreadsheet 2003 con estensione .xml.

  2. Salva come .xlsx

    Per rilevare le differenze della maggior parte dei fogli di calcolo in un modello di documento modulare, salvare i fogli di calcolo di Excel per confrontarli come cartella di lavoro di Excel in formato .xlsx. Apri i file per diff con diffdog. Ti informa che il file è un archivio ZIP e ti chiede se vuoi aprirlo per il confronto delle directory. Accettando il confronto delle directory, diventa relativamente semplice fare doppio clic su parti logiche del documento per diffonderle (con la modalità diff XML). La maggior parte delle parti del documento .xslx sono dati in formato XML. La vista griglia è estremamente utile. È banale diffondere i singoli fogli per focalizzare l'analisi su aree che sono note per essere cambiate.

La propensione di Excel a modificare determinati nomi di attributi con ogni salvataggio è fastidiosa, ma le funzionalità di diffing XML di diffdog includono la possibilità di filtrare determinati tipi di differenze. Ad esempio, i fogli di calcolo Excel in formato XML contengono row e c elementi con s attributi (stile) che vengono rinominati ad ogni salvataggio. L'impostazione di un filtro come c:s semplifica notevolmente la visualizzazione solo delle modifiche al contenuto.

diffdog ha molte capacità diff. Ho elencato le modalità diff XML solo semplicemente perché non ho usato un altro strumento che mi è piaciuto di più quando si tratta di differenziare i documenti Excel.

Vorrei usare il formato di file SYLK se l'esecuzione delle differenze è importante. È un formato basato su testo, che dovrebbe rendere i confronti più facili e compatti di un formato binario. È compatibile anche con Excel, Gnumeric e OpenOffice.org, quindi tutti e tre gli strumenti dovrebbero essere in grado di lavorare bene insieme. Articolo di SYLK Wikipedia

Ho trovato una macro openoffice qui che invocherà I documenti di confronto di openoffice funzionano su due file. Sfortunatamente, il confronto del foglio di calcolo di Openoffice sembra un po 'traballante; Ho appena avuto il pulsante "Rifiuta tutto" per inserire una colonna superflua nel mio documento.

plugin xdocdiff per SVN

Se stai usando Java, puoi provare simple-excel .

Diffonderà i fogli di calcolo usando gli abbinamenti Hamcrest e produrrà qualcosa del genere.

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)

Dovrei qualificarmi per aver scritto quello strumento (come se la risposta barrata fosse la propria).

Se si dispone di TortoiseSVN, è possibile CTRL fare clic sui due file per selezionarli in Esplora risorse, quindi fare clic con il pulsante destro del mouse, TortoiseSVN - > Diff.

Funziona particolarmente bene se stai cercando una piccola modifica in un set di dati di grandi dimensioni.

Ho il problema come te, quindi decido di scrivere un piccolo strumento per aiutarmi. Controlla ExcelDiff_Tools . Viene fornito con diversi punti chiave:

  • Supporta xls, xlsx, xlsm.
  • Con cella formula. Confronterà sia la formula che il valore.
  • Cerco di rendere l'interfaccia utente simile al visualizzatore di testi diff standard con: stato modificato, cancellato, aggiunto, invariato. Si prega di dare un'occhiata con l'immagine qui sotto per esempio: inserisci qui la descrizione dell'immagine

Diff Doc potrebbe essere quello che stai cercando.

  
      
  • Confronta i documenti di MS Word (DOC, DOCX ecc.), Excel, PDF, Rich Text (RTF), Text, HTML, XML, PowerPoint o Wordperfect e mantieni la formattazione
  •   
  • Scegli una parte di qualsiasi documento (file) e confrontala con qualsiasi parte dello stesso o diverso documento (file).
  •   

Non conosco nessuno strumento, ma ci sono due soluzioni roll-your-own che mi vengono in mente, entrambe richiedono Excel:

  1. Potresti scrivere un codice VBA che passi attraverso ogni foglio di lavoro, riga, colonna e cella delle due cartelle di lavoro, riportando le differenze.

  2. Se si utilizza Excel 2007, è possibile salvare le cartelle di lavoro in formato Open-XML (* .xlsx), estrarre l'XML e diff. Il file Open-XML è essenzialmente solo un file .zip di file .xml e manifest.

Ti ritroverai con un sacco di " noise " in entrambi i casi se i fogli di calcolo non sono strutturalmente " chiudi " per cominciare.

Converti in cvs, quindi caricalo su un sistema di controllo della versione, quindi diff con uno strumento avanzato di controllo della versione. Quando ho usato perforce aveva un ottimo strumento diff, ma ne dimentico il nome.

Sono il coautore di un'estensione Git gratuita e open source:

https://github.com/ZoomerAnalytics/git-xltrail

Fa funzionare Git con qualsiasi formato di file della cartella di lavoro di Excel senza soluzioni alternative.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top