Wednesday, September 26, 2012

Microsoft Office Excel Corrupted File

Hoje tivemos mais um problema de configuração de ambientes que foi um pouco chato de resolver por quê o erro não acontecia na nossa aplicação.

Descrição do Cenário:

Implementamos nosso sistema em uma empresa que possui um ERP e deseja que este sistema ERP atualize os dados de cadastro dos funcionários automaticamente no nosso sistema, todos os dias.

Para isso, disponibilizamos um serviço web através do qual a atualização dos dados seriam publicadas no nosso sistema a partir de arquivos .XLS exportados do sistema ERP.

O problema da abordagem adotada era que o ERP não gerava arquivos .XLSX e sim arquivos do tipo BIFF ou Excel 2. Descritos abaixo




Quando os arquivos eram publicados acontecia um erro de leitura dos dados através do provider Microsoft.ACE.OLEDB que não suporta esses tipos de arquivo.

A solução mais rápida foi adotar um novo processo antes de fazer a leitura das planilhas:

1 - Salvar arquivo BIFF/Excel 2 recebido pelo webservice.
2 - Abrir arquivo com o Microsoft Excel
3 - Salvar arquivo como .XLS (2007)
4 - Continuar leitura dos dados a partir do novo arquivo.

Quando publicamos em um dos nossos ambientes de homologação, a solução não funcionava, embora nos testes em desenvolvimento não tenha aparecido nenhum tipo de problema.

Investigando um pouco mais, no passo 2 descobrimos que o seguinte erro acontecia:


Neste momento, identificamos que o erro não estava na nossa aplicação, mas sim no Excel que não conseguia abrir o arquivo BIFF/Excel2.  Investigando o Log da aplicação no windows, conseguimos identificar a fonte do problema através da mensagem abaixo:


Para resolver a situação, foi necessário alterar algumas configurações de segurança no Microsoft Excel.

Abrindo o programa, clicamos em File > Options > Trust Center > Trust Center Settings > File Blocking Settings

Devemos desmarcar as opções Open e Save para os arquivos que precisamos, conforme mostrado na figura abaixo:




No comments:

Post a Comment