Tenemos muchas hojas de cálculo (xls) en nuestro repositorio de código fuente. Por lo general, 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 diferencias en los archivos xls que conozco, y esto hace que la fusión sea extremadamente tediosa y propensa a errores.
Intenté convertir las hojas de cálculo a xml y hacer una diferencia regular, pero realmente parece que debería ser un último recurso.
Me gustaría realizar la diferenciación (y fusión) con git
lo que hago con los archivos de texto. ¿Cómo haría esto, por ejemplo, al emitir git diff
?
git diff
ygitk
Respuestas:
Nos enfrentamos exactamente al mismo problema en nuestra compañía. Nuestras pruebas producen libros de Excel. La diferencia binaria no era una opción. Así que lanzamos nuestra propia herramienta de línea de comandos simple. Echa un vistazo al proyecto ExcelCompare . De hecho, esto nos permite automatizar nuestras pruebas bastante bien. Parches / Peticiones de características ¡bienvenidos!
fuente
Rápido y fácil sin herramientas externas, funciona bien siempre que las dos hojas que está comparando sean similares:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
la celda superior izquierda (o equivalente: haga clic en las celdas reales para insertar automáticamente las referencias en la fórmula)Si las hojas son similares, esta hoja de cálculo estará vacía, excepto por algunas celdas con X en ellas, resaltando las diferencias. Desenganche al 40% para ver rápidamente qué es diferente.
fuente
=Sheet1!A1=Sheet2!A1
. Esto imprimirá VERDADERO o FALSO. Luego puede hacer un formato condicional=countif(A1:B2, FALSE)
o algo similar.He comparado mucho los libros de Excel en el pasado. Mi técnica funciona muy bien para libros de trabajo con muchas hojas de trabajo, pero solo compara el contenido de las celdas, no el formato de las celdas, las macros, etc. Además, hay algo de codificación involucrada, pero vale la pena si tiene que comparar muchos archivos grandes repetidamente. Así es como funciona:
A) Escriba un programa de volcado simple que recorra todas las hojas de trabajo y guarde todos los datos en archivos separados por tabuladores. Cree un archivo por hoja de trabajo (use 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 de Excel y agregue 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 al hacer clic derecho en un archivo de Excel. Esto hace que sea muy fácil ejecutar este programa. Necesita Google para hacer esto, pero es tan fácil como escribir un archivo * .reg.
C) Get BeyondCompare . Tiene una característica muy buena para comparar datos delimitados mostrándolos en una buena tabla, mira la captura de pantalla .
D) Ahora está listo para comparar archivos de Excel con facilidad. Haga clic derecho en el archivo 1 de Excel 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 use BeyondCompare (BC) para comparar las carpetas. Cada archivo representa una hoja de trabajo, por lo que 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 diseño de tabla agradable, y puede ocultar filas y columnas que no le interesen.
fuente
Puede probar esta herramienta gratuita en línea: www.cloudyexcel.com/compare-excel/
Ofrece una buena salida visual en línea, en términos de filas agregadas, eliminadas, modificadas, etc.
Además, no tienes que instalar nada.
fuente
He encontrado xdocdiff WinMerge Plugin . Es un complemento para WinMerge (tanto OpenSource como Freeware , no necesita escribir un VBA ni guardar un Excel en csv o xml). Funciona solo para las celdas contiene.
Este complemento también admite:
Respeto, Andres
fuente
Hmmm En el menú de Excel, elija Ventana -> ¿Comparar lado a lado?
fuente
¿Utiliza TortoiseSVN para realizar sus confirmaciones y actualizaciones en subversion? Tiene una herramienta de diferencias, sin embargo, comparar archivos de Excel todavía no es fácil de usar. En mi entorno (Win XP, Office 2007), abre dos archivos de Excel para la comparación lado a lado.
Haga clic con el botón derecho en el documento> Tortoise SVN> Mostrar registro> seleccione revisión> haga clic con el botón derecho para "Comparar con copia de trabajo".
fuente
Las versiones más nuevas de MS Office vienen con Spreadsheet Compare , que realiza una diferencia bastante agradable en una GUI. Detecta la mayoría de los tipos de cambios.
fuente
diff
combinación basada en la línea de comandos , esta herramienta de comparación de hoja de cálculo fue perfecta para mis propósitos (comprobar las diferencias entre la salida de automatización de OpenXML y la salida de automatización COM de Excel).Hay una biblioteca daff (abreviatura de diferencias de datos) que ayuda a comparar tablas, producir un resumen de sus diferencias y usar dicho resumen como un archivo de parche.
Está escrito en Haxe, por lo que puede compilarse en los principales idiomas.
He creado una herramienta de diferencias de Excel en Javascript con la ayuda de esta biblioteca. Funciona bien con números y cadenas pequeñas, pero la salida no es ideal para cadenas largas (por ejemplo, una oración larga con un cambio menor de caracteres).
fuente
Sé que varias respuestas han sugerido exportar el archivo a csv o algún otro formato de texto, y luego compararlos. No lo he visto mencionado específicamente, pero Beyond Compare 3 tiene varios formatos de archivo adicionales que admite. Ver formatos de archivo adicionales . Usando uno de los formatos de archivo de Microsoft Excel, puede comparar fácilmente dos archivos de Excel sin pasar por la opción de exportación a otro formato.
fuente
Usaría el formato de archivo SYLK si realizar diffs es importante. Es un formato basado en texto, que debería hacer que las comparaciones sean más fáciles y compactas 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 de Wikipedia sobre SYLK
fuente
Utilice Altova DiffDog
Use 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. La diferenciación de texto es MUCHO MÁS DIFÍCIL para las hojas de cálculo de cualquier complejidad. Con esta herramienta, al menos dos métodos son viables en 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 XML Spreadsheet 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 modularizado, 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 comparar 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 de diferencias XML). 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 las 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 guardado es molesto, 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 forma XML contienen
row
yc
elementos que tienens
atributos (estilo) de cambio de nombre que con cada parada. Configurar un filtro comoc: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 diferencias XML solo porque no he usado otra herramienta que me haya gustado más cuando se trata de diferenciar documentos de Excel.
fuente
Encontré una macro de openoffice aquí que invocará la función de comparación de documentos de openoffice en dos archivos. Desafortunadamente, la comparación de la hoja de cálculo de openoffice parece un poco escasa; Acabo de hacer que el botón 'Rechazar todo' inserte una columna superflua en mi documento.
fuente
Complemento xdocdiff para SVN
fuente
Si está utilizando Java, puede probar simple-excel .
Difundirá hojas de cálculo usando los emparejadores de Hamcrest y generará algo como esto.
Debería calificar que escribimos esa herramienta (al igual que la respuesta marcada rodó la suya).
fuente
Si tiene TortoiseSVN, puede CTRLhacer clic en los dos archivos para seleccionarlos en el Explorador de Windows y luego hacer clic con el botón derecho en TortoiseSVN-> Diff.
Esto funciona particularmente bien si está buscando un pequeño cambio en un gran conjunto de datos.
fuente
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:
fuente
Soy coautor de una extensión gratuita de código abierto de Git:
https://github.com/ZoomerAnalytics/git-xltrail
Hace que Git funcione con cualquier formato de archivo de libro de Excel sin ninguna solución alternativa.
fuente
Diff Doc puede ser lo que estás buscando.
fuente
No conozco ninguna herramienta, pero hay dos soluciones roll-your-own que me vienen a la mente, ambas requieren Excel:
Podría escribir un código de VBA que recorra cada hoja de trabajo, fila, columna y celda de los dos libros de trabajo, informando diferencias.
Si usa Excel 2007, puede guardar los libros de trabajo en formato Open-XML (* .xlsx), extraer el XML y diferenciarlo. 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 "cerca".
fuente
Convierta a cvs, luego cárguelo a un sistema de control de versiones y luego diff con una herramienta avanzada de control de versiones. Cuando utilicé forzar, tenía una gran herramienta de diferencias, pero olvido su nombre.
fuente