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

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

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 sequências de dígitos numéricos. Estes não são números, mas sim identificadores. Notamos que a formatação padrão aplicada a esta coluna faz com que as entradas sejam interpretadas como números grandes que são posteriormente renderizados em notação científica. Esta já é uma experiência ruim para o usuário - mas espere, fica desastrosa. 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 6º estão sendo completamente truncados. Se o usuário alterar a formatação para que a coluna seja exibida corretamente antes de salvar, o Excel não apresentará esse comportamento e os dados não serão corrompidos ao salvar.

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

Agora, minha pergunta: é possível realizar alguma das ações acima, ou alguma outra ação que evite os problemas mencionados acima, por padrão ao abrir um arquivo do tipo CSV no MS Excel? Observe que provavelmente seria extremamente difícil fazer com que o cliente concordasse que os usuários finais devem desabilitar a execução de fórmulas para todos os arquivos, incluindo arquivos formatados em 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 do Excel dos usuários que são executadas em todos os arquivos CSV abertos?

Responder1

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.

informação relacionada