Temos muitas planilhas (xls) em nosso repositório de código-fonte. Geralmente são editados com gnumeric ou openoffice.org e são usados principalmente para preencher bancos de dados para testes de unidade com o dbUnit . Não há maneiras fáceis de fazer diferenças nos arquivos xls que eu conheço, e isso torna a fusão extremamente tediosa e propensa a erros.
Tentei converter as planilhas em xml e fazer uma comparação regular, mas realmente parece que deveria ser o último recurso.
Gostaria de executar a difusão (e a mesclagem) com git
o que faço com os arquivos de texto. Como eu faria isso, por exemplo, ao emitir git diff
?
git diff
egitk
Respostas:
Enfrentamos exatamente o mesmo problema em nossa empresa. Nossos testes produzem pastas de trabalho do Excel. O diff binário não era uma opção. Então, lançamos nossa própria ferramenta simples de linha de comando. Confira o projeto ExcelCompare . De fato, isso nos permite automatizar nossos testes bastante bem. Solicitações de patches / recursos são bem-vindas!
fonte
Rápido e fácil, sem ferramentas externas, funciona bem desde que as duas planilhas que você está comparando sejam semelhantes:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
a célula superior esquerda (ou equivalente: clique nas células reais para inserir automaticamente as referências na fórmula)Se as folhas forem semelhantes, essa planilha estará vazia, exceto por algumas células com X nelas, destacando as diferenças. Unzoom para 40% para ver rapidamente o que é diferente.
fonte
=Sheet1!A1=Sheet2!A1
. Isso imprimirá VERDADEIRO ou FALSO. Você pode fazer formatação condicional=countif(A1:B2, FALSE)
ou algo semelhante.Eu fiz muitas comparações de pastas de trabalho do Excel no passado. Minha técnica funciona muito bem para pastas de trabalho com muitas planilhas, mas apenas compara o conteúdo da célula, não a formatação da célula, macros etc. Além disso, há alguma codificação envolvida, mas vale a pena se você precisar comparar vários arquivos grandes repetidamente. Veja como funciona:
A) Escreva um programa de despejo simples que percorra todas as planilhas e salve todos os dados em arquivos separados por tabulação. Crie um arquivo por planilha (use o nome da planilha como o nome do arquivo, por exemplo, "MyWorksheet.tsv") e crie uma nova pasta para esses arquivos sempre que executar o programa. Nomeie a pasta após o nome do arquivo do excel e adicione um carimbo de data / hora, por exemplo, "20080922-065412-MyExcelFile". Eu fiz isso em Java usando uma biblioteca chamada JExcelAPI . É realmente muito fácil.
B) Adicione uma extensão de shell do Windows para executar seu novo programa Java da etapa A ao clicar com o botão direito do mouse em um arquivo do Excel. Isso facilita muito a execução deste programa. Você precisa do Google como fazer isso, mas é tão fácil quanto gravar um arquivo * .reg.
C) Obtenha o BeyondCompare . Ele tem um recurso muito legal para comparar dados delimitados, mostrando-os em uma boa tabela, veja a captura de tela .
D) Agora você está pronto para comparar arquivos do Excel com facilidade. Clique com o botão direito do mouse no arquivo 1 do Excel e execute seu programa de despejo. Ele criará uma pasta com um arquivo por planilha. Clique com o botão direito do mouse no arquivo 2 do Excel e execute seu programa de despejo. Ele criará uma segunda pasta com um arquivo por planilha. Agora use BeyondCompare (BC) para comparar as pastas. Cada arquivo representa uma planilha, portanto, se houver diferenças em uma planilha, o BC mostrará isso e você poderá detalhar e fazer uma comparação de arquivos. O BC mostrará a comparação em um bom layout de tabela e você pode ocultar linhas e colunas nas quais não está interessado.
fonte
Você pode experimentar esta ferramenta on-line gratuita - www.cloudyexcel.com/compare-excel/
Dá uma boa saída visual online, em termos de linhas adicionadas, excluídas, alteradas etc.
Além disso, você não precisa instalar nada.
fonte
Eu encontrei o xdocdiff WinMerge Plugin . É um plugin para o WinMerge (tanto OpenSource quanto Freeware , você não precisa escrever um VBA nem salvar um excel em csv ou xml). Funciona apenas para o celd contém.
Este plugin também suporta:
Regard, Andres
fonte
Hummm. No menu do Excel, escolha Janela -> Comparar lado a lado?
fonte
Você usa o TortoiseSVN para realizar seus commits e atualizações no subversion? Possui uma ferramenta diff, no entanto, a comparação de arquivos do Excel ainda não é muito amigável. No meu ambiente (Win XP, Office 2007), ele abre dois arquivos do Excel para comparação lado a lado.
Clique com o botão direito do mouse em documento> Tortoise SVN> Mostrar log> selecione revisão> clique com o botão direito em "Comparar com a cópia de trabalho".
fonte
As versões mais recentes do MS Office vêm com o Spreadsheet Compare , que executa uma comparação bastante agradável em uma GUI. Ele detecta a maioria dos tipos de alterações.
fonte
diff
mesclagem baseada em linha de comando , esta ferramenta Comparar planilha foi perfeita para meus propósitos (verificar as diferenças entre a saída de automação OpenXML e a saída de automação COM do Excel).Existe uma biblioteca daff (abreviação de diff de dados) que ajuda na comparação de tabelas, produzindo um resumo de suas diferenças e usando esse resumo como um arquivo de correção.
Está escrito em Haxe, para que possa ser compilado nos principais idiomas.
Eu criei uma Ferramenta de Diferença do Excel em Javascript com a ajuda desta biblioteca. Funciona bem com números e cadeias pequenas, mas a saída não é ideal para cadeias longas (por exemplo, uma sentença longa com pequenas alterações de caracteres).
fonte
Sei que várias respostas sugeriram exportar o arquivo para csv ou algum outro formato de texto e compará-las. Não o vi mencionado especificamente, mas o Beyond Compare 3 possui vários formatos de arquivo adicionais compatíveis. Consulte Formatos de arquivo adicionais . Usando um dos formatos de arquivo do Microsoft Excel, você pode comparar facilmente dois arquivos do Excel sem precisar exportar para outra opção de formato.
fonte
Eu usaria o formato de arquivo SYLK se a execução de diferenças for importante. É um formato baseado em texto, que deve tornar as comparações mais fáceis e compactas que um formato binário. Também é compatível com Excel, Gnumeric e OpenOffice.org, portanto, todas as três ferramentas devem funcionar bem juntas. Artigo da Wikipedia sobre SYLK
fonte
Use Altova DiffDog
Use o modo diff XML do diffdog e o Grid View para revisar as diferenças em um formato tabular fácil de ler. A diferenciação de texto é MUITO MAIS DURA para planilhas de qualquer complexidade. Com esta ferramenta, pelo menos dois métodos são viáveis em várias circunstâncias.
Salvar como .xml
Para detectar as diferenças de uma planilha simples de uma planilha, salve as planilhas do Excel para comparar como XML Spreadsheet 2003 com uma extensão .xml.
Salvar como .xlsx
Para detectar as diferenças da maioria das planilhas em um modelo de documento modularizado, salve as planilhas do Excel para comparar como uma pasta de trabalho do Excel no formato .xlsx. Abra os arquivos para diff com diffdog. Ele informa que o arquivo é um arquivo ZIP e pergunta se você deseja abri-lo para comparação de diretórios. Ao concordar com a comparação de diretórios, torna-se relativamente simples clicar duas vezes em partes lógicas do documento para diferenciá-las (com o modo de diferenças XML). A maioria das partes do documento .xslx são dados no formato XML. O Grid View é extremamente útil. É trivial diferenciar folhas individuais para focar a análise em áreas que se sabe terem mudado.
A propensão do Excel de ajustar certos nomes de atributos a cada salvamento é irritante, mas os recursos de difusão XML do diffdog incluem a capacidade de filtrar certos tipos de diferenças. Por exemplo, as planilhas do Excel no formato XML contêm
row
ec
elementos que possuems
atributos (estilo) que são renomeados a cada salvamento. Configurar um filtro comoc:s
esse facilita muito a exibição apenas de alterações de conteúdo.O diffdog tem muita capacidade de diferenciação. Eu listei os modos de diferenças XML apenas porque não usei outra ferramenta de que gostei mais quando se trata de diferenciar documentos do Excel.
fonte
Encontrei uma macro do openoffice aqui que invocará a função de comparar documentos do openoffice em dois arquivos. Infelizmente, a comparação da planilha do openoffice parece um pouco esquisita; Acabei de colocar o botão 'Rejeitar tudo' inserir uma coluna supérflua no meu documento.
fonte
plugin xdocdiff para SVN
fonte
Se você estiver usando Java, tente o simple-excel .
Ele difere as planilhas usando os combinadores Hamcrest e produz algo parecido com isto.
Devo qualificar que escrevemos essa ferramenta (como a resposta marcada).
fonte
Se você possui o TortoiseSVN, pode CTRLclicar nos dois arquivos para selecioná-los no Windows Explorer e clicar com o botão direito do mouse em TortoiseSVN-> Diff.
Isso funciona particularmente bem se você estiver procurando por uma pequena alteração em um grande conjunto de dados.
fonte
Eu tenho o problema como você, então decido escrever uma pequena ferramenta para me ajudar. Por favor, verifique ExcelDiff_Tools . Ele vem com vários pontos-chave:
fonte
Eu sou o co-autor de uma extensão Git gratuita e de código aberto:
https://github.com/ZoomerAnalytics/git-xltrail
Faz o Git funcionar com qualquer formato de arquivo da pasta de trabalho do Excel sem nenhuma solução alternativa.
fonte
Diff Doc pode ser o que você está procurando.
fonte
Não conheço nenhuma ferramenta, mas existem duas soluções de "faça você mesmo", que exigem o Excel:
Você pode escrever um código VBA que percorre cada planilha, linha, coluna e célula das duas pastas de trabalho, relatando diferenças.
Se você usa o Excel 2007, você pode salvar as Pastas de Trabalho como formato Open-XML (* .xlsx), extrair o XML e diferenciá-lo. O arquivo Open-XML é essencialmente apenas um arquivo .zip de arquivos .xml e manifestos.
Em ambos os casos, você terá muito "ruído" se suas planilhas não estiverem estruturalmente "fechadas" para começar.
fonte
Converta em cvs, faça o upload para um sistema de controle de versão e depois faça a diferença com uma ferramenta avançada de controle de versão Quando usei o forforce, ele tinha uma ótima ferramenta diff, mas esqueço o nome dela.
fonte