Aplicando configurações por padrão aos documentos CSV abertos no MS Excel

1

Os usuários finais de um sistema que estamos desenvolvendo recebem um arquivo CSV antigo que os usuários finais abrirão no MS Excel. Uma das colunas conterá entradas que consistem em seqüências de dígitos numéricos. Estes não são números, mas sim identificadores. Percebemos que a formatação padrão aplicada a essa coluna faz com que as entradas sejam interpretadas como números grandes que são posteriormente renderizados em notação científica. Esta é uma experiência ruim para o usuário - mas espere, isso é desastroso. Ao salvar o arquivo, os dados aparentemente estão sendo interpretados como um valor de ponto flutuante de precisão única e todos os dígitos após o sexto estão sendo truncados completamente. Se o usuário alterar a formatação para que a coluna seja exibida corretamente antes de salvar, o Excel não exibirá esse comportamento e os dados não serão corrompidos ao salvar.

Descobri que (1) alterar o formato da coluna ou (2) desativar a avaliação da fórmula impede que os dois problemas aconteçam.

Agora, minha pergunta: é possível executar uma das ações acima ou alguma outra ação que evitará os problemas mencionados acima, por padrão, ao abrir um arquivo do tipo CSV no MS Excel? Observe que provavelmente seria uma venda incrivelmente difícil fazer com que o cliente concordasse que os usuários finais precisam desativar a execução da fórmula para todos os arquivos, incluindo os arquivos formatados do Excel. Existe alguma maneira de definir configurações globais? Alguma maneira de configurar como os CSVs em particular são tratados? Alguma maneira de distribuir uma macro para as instalações dos usuários do Excel que são executadas em todos os arquivos CSV abertos?

    
por Patrick87 15.02.2016 / 14:57

1 resposta

0

Descobri que isso pode ser feito escrevendo um suplemento do Excel. Na pasta de trabalho aberta, posso fazer o seguinte:

// set format of everything to text
Wb.ActiveSheet.UsedRange.NumberFormat = "@";

// disable further formatting - may not be necessary
Wb.ActiveSheet.EnableFormatConditionsCalculation = "false";

// for any existing cells, overwrite the formatted data with the real data, e.g., the formula
Wb.ActiveSheet.UsedRange.Value = Wb.ActiveSheet.UsedRange.Formula;

Isso funciona para mim no Excel 2010.

    
por 15.02.2016 / 19:26