rama - ver diferencias de un archivo git
¿Cómo creo un diff legible de dos hojas de cálculo usando git diff? (19)
Tenemos muchas hojas de cálculo (xls) en nuestro repositorio de código fuente. Estos generalmente se editan con gnumeric u openoffice.org, y se utilizan principalmente para llenar bases de datos para pruebas unitarias con dbUnit . No hay formas fáciles de hacer diffs en archivos xls que yo sepa, y esto hace que la fusión sea extremadamente tediosa y propensa a errores.
Intenté convertir las hojas de cálculo en xml y hacer un diff regular, pero realmente parece que debería ser el último recurso.
Me gustaría realizar la diferencia (y la fusión) con git
como hago con los archivos de texto. ¿Cómo haría esto, por ejemplo, al emitir git diff
?
¿Usas TortoiseSVN para hacer tus commits y actualizaciones en subversión? Tiene una herramienta diff, sin embargo, comparar archivos de Excel todavía no es realmente fácil de usar. En mi entorno (Win XP, Office 2007), abre dos archivos de Excel para la comparación de lado a lado.
Haga clic derecho en el documento> Tortoise SVN> Mostrar registro> seleccionar revisión> clic derecho para "Comparar con copia de trabajo".
Complemento xdocdiff para SVN
Convierta a cvs luego cargue a un sistema de control de versiones y luego difúndelo con una herramienta de control de versiones avanzada. Cuando utilicé forzosamente tuve una gran herramienta de diferenciación, pero olvido su nombre.
Encontré here una macro de oficina abierta que invocará la función de documentos de comparación de Open Office en dos archivos. Desafortunadamente, la comparación de hojas de cálculo de OpenOffice parece un poco escamosa; Acabo de hacer que el botón "Rechazar todo" inserte una columna superflua en mi documento.
Enfrentamos exactamente el mismo problema en nuestra empresa. Nuestras pruebas arrojan libros de trabajo de Excel. La diferencia binaria no era una opción. Así que lanzamos nuestra propia herramienta de línea de comando simple. Vea el proyecto ExcelCompare . De hecho, esto nos permite automatizar nuestras pruebas bastante bien. Los parches / solicitudes de funciones son bienvenidos!
He comparado un montón de libros de trabajo de Excel en el pasado. Mi técnica funciona muy bien para libros de trabajo con muchas hojas de cálculo, pero solo compara el contenido de las celdas, no el formato de celdas, macros, etc. También hay codificación, pero vale la pena si tiene que comparar una gran cantidad de archivos grandes repetidamente. Así es como funciona:
A) Escriba un programa de volcado simple que recorre todas las hojas de trabajo y guarda todos los datos en archivos separados por tabuladores. Cree un archivo por hoja de trabajo (utilice el nombre de la hoja de trabajo como nombre de archivo, por ejemplo, "MyWorksheet.tsv") y cree una nueva carpeta para estos archivos cada vez que ejecute el programa. Asigne un nombre a la carpeta después del nombre de archivo excel y añada una marca de tiempo, por ejemplo, "20080922-065412-MyExcelFile". Hice esto en Java usando una biblioteca llamada JExcelAPI . Es realmente bastante fácil.
B) Agregue una extensión de shell de Windows para ejecutar su nuevo programa Java desde el paso A haciendo clic derecho en un archivo de Excel. Esto hace que sea muy fácil ejecutar este programa. Necesitas Google para hacer esto, pero es tan fácil como escribir un archivo * .reg.
C) Obtener BeyondCompare . Tiene una característica muy buena para comparar datos delimitados mostrándolos en una buena tabla, ver captura de pantalla .
D) Ahora está listo para comparar archivos de Excel con facilidad. Haga clic derecho en el archivo de Excel 1 y ejecute su programa de volcado. Creará una carpeta con un archivo por hoja de trabajo. Haga clic derecho en el archivo de Excel 2 y ejecute su programa de volcado. Creará una segunda carpeta con un archivo por hoja de trabajo. Ahora usa BeyondCompare (BC) para comparar las carpetas. Cada archivo representa una hoja de trabajo, por lo tanto, si hay diferencias en una hoja de trabajo, BC lo mostrará y podrá profundizar y hacer una comparación de archivos. BC mostrará la comparación en un buen diseño de tabla, y puede ocultar filas y columnas que no le interesan.
He encontrado xdocdiff WinMerge Plugin . Es un complemento para WinMerge (tanto OpenSource como Freeware , no es necesario escribir un VBA ni guardar un Excel en csv o xml). Funciona solo para el contenido del contenedor.
Este complemento también admite:
- .rtf Texto enriquecido
- .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 Documento abierto
- .wj2 / wj3 / wk3 / wk4 / 123 Lotus 123
- .wri Windows3.1 Write
- .pdf Adobe PDF
- .mht Archivo web
- .eml Archivos exportados desde OutlookExpress
Mira, Andrés
Hmmm. En el menú de Excel, elija Ventana -> ¿Comparar lado a lado?
Las versiones más nuevas de MS Office vienen con Spreadsheet Compare , que realiza una diferencia bastante buena en una GUI. Detecta la mayoría de los tipos de cambios.
No conozco ninguna herramienta, pero me vienen a la mente dos soluciones propias, ambas requieren Excel:
Podría escribir algún código de VBA que pase por cada Hoja de trabajo, Fila, Columna y Celda de los dos Libros de trabajo, informando las diferencias.
Si usa Excel 2007, puede guardar los libros de trabajo como formato Open-XML (* .xlsx), extraer el XML y modificarlo. El archivo Open-XML es esencialmente solo un archivo .zip de archivos y manifiestos .xml.
En cualquier caso, terminará con mucho "ruido" si sus hojas de cálculo no están estructuralmente "cerradas" para empezar.
Puede probar esta herramienta gratuita en línea: www.cloudyexcel.com/compare-excel/
Proporciona un buen resultado visual en línea, en términos de filas agregadas, eliminadas, cambiadas, etc.
Además, no tienes que instalar nada.
Rápido y fácil, sin herramientas externas, funciona bien siempre que las dos hojas que está comparando sean similares:
- Crea una tercera hoja de cálculo
- Escriba
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
en la celda superior izquierda (o equivalente: haga clic en las celdas reales para que automáticamente se inserten las referencias en la fórmula) - Ctrl + C (copiar), Ctrl + A (seleccionar todo), Ctrl + V (pegar) para llenar la hoja.
Si las hojas son similares, esta hoja de cálculo estará vacía a excepción de algunas celdas con X en ellas, destacando las diferencias. Unzoom al 40% para ver rápidamente qué es diferente.
Sé que varias respuestas sugirieron exportar el archivo a csv u otro formato de texto y luego compararlo. No lo he visto mencionar específicamente, pero Beyond Compare 3 tiene una cantidad de formatos de archivo adicionales que admite. Ver formatos de archivo adicionales . Con uno de los formatos de archivo de Microsoft Excel puede comparar fácilmente dos archivos de Excel sin tener que pasar por la opción de exportar a otro formato.
Si está utilizando Java, puede probar simple-excel .
Difundirá las hojas de cálculo usando Hamcrest Matchers y generará algo como esto.
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)
Debería calificar para que escribiéramos esa herramienta (como la respuesta marcada se hizo suya).
Si tiene TortoiseSVN, puede hacer clic con la tecla CTRL en los dos archivos para seleccionarlos en Windows Explorer y luego hacer clic con el botón derecho, TortoiseSVN-> Diff.
Esto funciona particularmente bien si está buscando un pequeño cambio en un gran conjunto de datos.
Tengo el problema como tú, así que decido escribir una pequeña herramienta para ayudarme. Por favor, consulte ExcelDiff_Tools . Viene con varios puntos clave:
Usaría el formato de archivo SYLK si realizar diffs es importante. Es un formato basado en texto, que debería facilitar las comparaciones y ser más compacto que un formato binario. También es compatible con Excel, Gnumeric y OpenOffice.org, por lo que las tres herramientas deberían funcionar bien juntas. Artículo SYLK Wikipedia
Utilice Altova DiffDog
Utilice el modo diff de XML de diffdog y la vista de cuadrícula para revisar las diferencias en un formato tabular fácil de leer. El texto que difiere es MUCHO MÁS DIFÍCIL para hojas de cálculo de cualquier complejidad. Con esta herramienta, al menos dos métodos son viables bajo diversas circunstancias.
Guardar como .xml
Para detectar las diferencias de una hoja de cálculo simple de una hoja, guarde las hojas de cálculo de Excel para compararlas como hojas de cálculo XML 2003 con una extensión .xml.
Guardar como .xlsx
Para detectar las diferencias de la mayoría de las hojas de cálculo en un modelo de documento modular, guarde las hojas de cálculo de Excel para compararlas como un Libro de Excel en formato .xlsx. Abra los archivos a diff con diffdog. Le informa que el archivo es un archivo ZIP, y le pregunta si desea abrirlo para la comparación de directorios. Al aceptar la comparación de directorios, se convierte en una cuestión relativamente simple hacer doble clic en las partes lógicas del documento para diferenciarlas (con el modo XML diff). La mayoría de las partes del documento .xslx son datos con formato XML. La vista de cuadrícula es extremadamente útil. Es trivial diferenciar hojas individuales para enfocar el análisis en áreas que se sabe que han cambiado.
La propensión de Excel a modificar ciertos nombres de atributos con cada operación de guardado es molesta, pero las capacidades de diferenciación XML de diffdog incluyen la capacidad de filtrar ciertos tipos de diferencias. Por ejemplo, las hojas de cálculo de Excel en formato XML contienen elementos de row
y c
que tienen atributos s
(estilo) que cambian de nombre con cada operación de guardado. La configuración de un filtro como c:s
hace que sea mucho más fácil ver solo los cambios de contenido.
diffdog tiene mucha capacidad de diferenciación. He enumerado los modos de diferencia XML simplemente porque no he usado otra herramienta que me gustaba más cuando se trata de diferenciar documentos de Excel.
Diff Doc puede ser lo que estás buscando.
- Compare documentos de MS Word (DOC, DOCX, etc.), Excel, PDF, texto enriquecido (RTF), texto, HTML, XML, PowerPoint o Wordperfect y conserve el formato
- Elija cualquier parte de cualquier documento (archivo) y compárelo con cualquier parte del mismo documento o archivo (archivo).