Pergunta

Nós temos um monte de planilhas (XLS) em nosso repositório de código fonte. Estes são geralmente editado com gnumerica ou openoffice.org, e são utilizados principalmente para bases de dados para o teste de unidade Preencher com DbUnit . Não há maneiras fáceis de fazer diffs de arquivos XLS que eu conheço, e isso faz a fusão extremamente tedioso e propenso a erros.

Eu tentei converter as planilhas para xml e fazer uma comparação regular, mas ele realmente se sente como ele deve ser um último recurso.

Eu gostaria de executar a diffing (e fusão) com git como eu faço com arquivos de texto. Como eu poderia fazer isso, por exemplo, quando da emissão git diff?

Foi útil?

Solução

Enfrentamos exatamente a mesma questão na nossa co. Nossos testes de saída de planilhas do Excel. diff binário não era uma opção. Então nós rolamos a nossa própria ferramenta de linha de comando simples. Confira o ExcelCompare projeto . De fato isso nos permite automatizar nossos testes muito bem. Patches / Solicitações de recursos muito bem-vindos!

Outras dicas

rápida e fácil, sem ferramentas externas, funciona bem, desde que as duas folhas que você está comparando são semelhantes:

  • Crie uma terceira planilha
  • Digite =if(Sheet1!A1 <> Sheet2!A1, "X", "") na célula superior esquerda (ou equivalente: clique sobre as células reais para automaticamente se as referências inserido na fórmula)
  • Ctrl + C (cópia), Ctrl + A (seleccionar todos), Ctrl + V (colar) para preencher a folha.

Se as folhas são semelhantes, esta planilha estará vazia, exceto por algumas células com X neles, destacando as diferenças. Unzoom a 40% para rapidamente ver o que é diferente.

Eu fiz um monte de comparação de planilhas do Excel no passado. Minha técnica funciona muito bem para pastas de trabalho com muitas planilhas, mas só compara o conteúdo da célula, e não a formatação da célula, macros, etc. Além disso, há alguma codificação envolvidos, mas é assim vale a pena se você tem que comparar um monte de arquivos grandes repetidamente. Veja como funciona:

A) Escreva um programa despejo simples que percorre todas as planilhas e salva todos os dados em arquivos separados por tabulação. Criar um arquivo por planilha (use o nome da planilha como o nome do arquivo, por exemplo "MyWorksheet.tsv"), e criar uma nova pasta para esses arquivos cada vez que você executar o programa. Nomeie a pasta após o nome do arquivo excel e adicionar um timestamp, por exemplo, "20080922-065412-MyExcelFile". Eu fiz isso em Java usando uma biblioteca chamada JExcelAPI . É realmente muito fácil.

B) Adicionar uma extensão de shell do Windows para executar o seu novo programa Java a partir do passo A ao clicar com o botão direito em um arquivo de Excel. Isto torna muito fácil de executar este programa. Você precisa Google como fazer isso, mas é tão fácil como escrever um arquivo * .reg.

C) Get BeyondCompare . Ele tem uma característica muito legal para comparar os dados delimitados por mostrá-lo em uma tabela agradável, ver Screenshot .

D) Agora você está pronto para comparar arquivos do Excel com facilidade. Clique com o botão direito do mouse no arquivo de Excel 1 e executar o seu programa de despejo. Ele vai criar uma pasta com um arquivo por planilha. Clique com o botão direito do mouse no arquivo de Excel 2 e executar o seu programa de despejo. Ele vai criar uma segunda pasta com um arquivo por planilha. Agora use BeyondCompare (BC) para comparar as pastas. Cada arquivo representa uma planilha, por isso, se existem diferenças de uma BC planilha irá mostrar isso e você pode analisar e fazer uma comparação de arquivo. BC irá mostrar a comparação em um layout de tabela agradável, e você pode ocultar linhas e colunas que você não está interessado.

Você pode tentar usar essa ferramenta on-line gratuita - www.cloudyexcel.com/compare-excel/

Ela dá uma boa saída visual on-line, em termos de linhas adicionadas, excluídas, mudou etc.

enter descrição da imagem aqui

Além disso, você donot tem que instalar nada.

Eu encontrei xdocdiff WinMerge Plugin . É um plugin para o WinMerge (ambos OpenSource e Freeware , você não precisa escrever uma VBA nem salvar um excel para csv ou xml). Ele funciona apenas para contém o celd.

Este plugin também suporta:

  • .rtf Rich Text
  • .docx / .docm Microsoft Word 2007 (OOXML)
  • .xlsx / .xlsm Microsoft Excel 2007 (OOXML)
  • .pptx / .pptm Microsoft PowerPoint 2007 (OOXML)
  • .doc do 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 Open Document
  • .wj2 / wj3 / WK3 / WK4 / 123 Lotus 123
  • .wri Windows3.1 Write
  • .pdf Adobe PDF
  • .mht Web Archive
  • .eml arquivos exportados do OutlookExpress

Regard, Andres

Hmmm. A partir do menu Excel escolha Janela -> lado a lado Compare

Você usa TortoiseSVN para fazer suas submissões e atualizações na subversão? Ele tem uma ferramenta de comparação, no entanto comparando arquivos do Excel ainda não é realmente fácil de usar. No meu ambiente (Win XP, Office 2007), abre dois arquivos Excel para comparação lado a lado.

documento Botão direito do mouse> Tortoise SVN> Mostrar Log> select revisão> clique direito em "Compare com cópia de trabalho".

Eu sei que várias respostas sugeriram exportar o arquivo para CSV ou algum outro formato de texto, e depois compará-los. Eu não vi ele mencionou especificamente, mas Beyond Compare 3 tem um número de formatos de arquivo adicionais que ele suporta. Veja formatos de arquivo adicionais . Usando um dos formatos de arquivo do Microsoft Excel você pode facilmente comparar dois arquivos do Excel sem passar pela exportação para uma outra opção de formato.

Novas versões do MS Office vêm com Spreadsheet Compare , que realiza um nice diff em uma GUI. Ele detecta a maioria dos tipos de alterações.

Há uma biblioteca daff (abreviação de diff de dados) que ajuda na comparação de tabelas, produzindo um resumo de suas diffs, e usando tal sumário como um arquivo de patch.

Ele é escrito em Haxe, para que possa ser compilado nos principais idiomas.

Eu fiz um Excel ferramenta de comparação em JavaScript com a ajuda desta biblioteca. Ele funciona bem com números e pequenas cordas, mas a saída não é ideal para longas cordas (por exemplo, uma sentença longa com com pequena alteração personagem).

Use Altova DiffDog

Modo diff XML de Uso DiffDog e Grid View para rever as diferenças em um fácil de ler formato tabular. diff'ing texto é muito mais difícil para planilhas de qualquer complexidade. Com esta ferramenta, pelo menos, dois métodos são viáveis ??sob várias circunstâncias.

  1. Salvar como .xml

    Para detectar as diferenças de uma maneira simples, uma folha de planilha, salvar as planilhas do Excel para comparar como XML Spreadsheet 2003 com uma extensão .xml.

  2. Salvar como .xlsx

    Para detectar as diferenças da maioria das planilhas em um modelo de documento modularizado, salvar a planilhas do Excel para comparar como um livro do Excel em forma .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 diretório. Após a concordar em comparação diretório, torna-se uma questão relativamente simples de duplo clique partes lógicas do documento para diff-los (com o modo diff XML). A maioria das partes do documento .xslx são dados em formato XML. O Grid View é extremamente útil. É trivial diff folhas individuais para se concentrar a análise em áreas que são conhecidos por terem alterado.

propensão do Excel para ajustar certos nomes de atributos com cada save é irritante, mas recursos de XML diff'ing de DiffDog incluem a capacidade de filtrar certos tipos de diferenças. Por exemplo, planilhas do Excel em formato XML contêm row e c elementos que têm atributos s (estilo) que renomeação com cada save. Configurando um filtro como c:s torna muito mais fácil para visualizar as alterações apenas conteúdo.

DiffDog tem um monte de diff'ing capacidade. Eu listei os modos diff XML única simplesmente porque eu não usei uma outra ferramenta que eu gostava mais quando se trata de diferenciação documentos do Excel.

Gostaria de usar o formato de arquivo SYLK se realizando diffs é importante. É um formato baseado em texto, que deve fazer as comparações mais fácil e mais compacto do que um formato binário. É compatível com Excel, Gnumeric, e OpenOffice.org, bem, então todas as três ferramentas devem ser capazes de trabalhar bem em conjunto. SYLK Wikipedia artigo

Eu encontrei um macro OpenOffice aqui que invocará documentos comparar OpenOffice funcionar em dois arquivos. Infelizmente, planilha do OpenOffice comparar parece um pouco esquisito; Eu só tinha o botão 'Rejeitar All' inserir uma coluna supérfluo no meu documento.

xdocdiff plugin para SVN

Se você estiver usando Java, você poderia tentar simples excel .

Ele vai diff planilhas usando matchers hamcrest e saída algo como isto.

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)

Eu deveria qualificar que escreveu essa ferramenta (como a resposta assinalada rolou seus próprios).

Se você tiver TortoiseSVN então você pode Ctrl clique nos dois arquivos para selecioná-los no Windows Explorer e, em seguida, clique com o botão direito, TortoiseSVN> Dif.

Isso funciona particularmente bem se você estiver procurando por uma pequena mudança em um grande conjunto de dados.

Eu tenho o problema como você então eu decidir escrever pequena ferramenta para me ajudar a sair. Verifique ExcelDiff_Tools . Ele vem com vários pontos-chave:

  • xls Apoio, xlsx, xlsm.
  • Com célula de fórmula. Ele irá comparar ambos fórmula e valor.
  • Eu tento fazer olhar UI como visualizador de texto diff padrão com:, excluído, acrescentou estatuto modificado, inalterado. Por favor, dê uma olhada com a imagem abaixo, por exemplo: enter descrição da imagem aqui

Diff Doc pode ser o que você está procurando.

  • documentos Compare de MS Word (DOC, DOCX etc), Excel, PDF, Rich Text Format (RTF), Texto, HTML, XML, PowerPoint ou do WordPerfect e manter a formatação
  • Escolha qualquer parte de qualquer documento (arquivo) e compará-la com qualquer parte do mesmo ou de diferente documento (arquivo).

Eu não sei de quaisquer ferramentas, mas há duas soluções roll-seu-próprio que vêm à mente, ambos exigem Excel:

  1. Você pode escrever algum código VBA que percorre cada planilha, linha, coluna e celular das duas pastas de trabalho, relatando as diferenças.

  2. Se você usar o Excel 2007, você pode salvar as pastas de trabalho como (* .xlsx) formato Open-XML, extrair o XML e diff isso. O arquivo Open-XML é essencialmente apenas um arquivo .zip de arquivos .xml e manifestos.

Você vai acabar com um monte de "ruído" em ambos os casos, se suas planilhas não são estruturalmente "fechar" para começar.

Converter para cvs, em seguida, fazer o upload para um sistema de controle de versão, em seguida, diff com uma ferramenta de comparação de controle de versão avançada. Quando eu usei forçosamente que tinha um excelente ferramenta de comparação, mas eu esqueci o nome dela.

Eu sou o co-autor, uma extensão gratuita de código aberto Git:

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

Ele faz o trabalho Git com qualquer formato de arquivo de pasta de trabalho do Excel, sem quaisquer soluções alternativas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top