Eu tenho um relatório do SQL Server Reporting Services (SSRS) 2012 que é preenchido por meio de procedimento armazenado (SP). O SP retorna vários campos, um dos quais é um tipo de BIGINT
dados. Quando executo o relatório do SSRS diretamente, o valor é exibido corretamente, mas quando exporto a saída para o Excel, ele é arredondado para o milésimo mais próximo.
Por exemplo, este é um exemplo do que estou vendo.
O valor adequado:480758225903628660
O valor mostrado no arquivo Excel:480758225903629000
Está arredondando 8660 para 9000 . Verdadeiramente frustrante, e a documentação da Microsoft não menciona nada sobre esse comportamento. Também pesquisei em todos os lugares do relatório que posso pensar que podem afetar isso, como as Propriedades da caixa de texto:
... as propriedades do espaço reservado:
... e o Valor do próprio campo:
Eu posso "consertar" convertendo o campo em uma string envolvendo o valor do campo em uma função CStr()
ou.ToString()
, mas isso também trata a saída como uma string e não como um número. Existe uma maneira de exportar isso para o Excel para que o arredondamento não ocorra, mas ainda mantenha esse valor numérico?
Como sugere MguerraTorres, o SSRS provavelmente ficou confuso em algum lugar, e o valor sugere que está sendo convertido em algum tipo de dado de ponto flutuante em algum lugar ao longo da linha.
Tente verificar o tipo de dados que o SSRS está atribuindo examinando o xml no texto bruto do arquivo .rdl.
para uma coluna bigint simples, estou vendo uma definição de campo do SSRS algo assim:
Você pode então editar o tipo de dados diretamente nessa estrofe de texto e enganar o SSRS para se classificar
OHHH Cara, eu interpretei mal sua pergunta inicial. Isso é 100% um problema do Excel. Você PRECISA converter esse valor em texto/string antes de exportá-lo para o Excel.
Você terá exatamente o mesmo problema se tentar esta experiência:
Observar isso confirma que não tem nada a ver com o SSRS, mas com o Excel.
No entanto, se você:
Você notará que o valor chega corretamente e não é arredondado. *É muito importante que você altere o formato da coluna ANTES de colar os valores para poder vê-la em ação. É basicamente converter para notação científica e depois exibir esse valor, que é sempre arredondado.
*Obrigado Jerb por me fazer reler a pergunta original. Eu dei uma olhada e não percebi "mas quando exporto a saída para o Excel, ela é arredondada para o milésimo mais próximo".
https://www.tutorialgateway.org/format-numbers-in-ssrs/
Formate seu campo de texto clicando com o botão direito do mouse na caixa de texto e selecione 'propriedades da caixa de texto' no menu suspenso, clique em número, depois em personalizado e coloque 0 na caixa de formato personalizado. Eu descobri isso depois de ler outro fórum sobre como converter campos que são baixados no excel como notação científica, em seu formato original (formatar em texto uma vez que estão em notação científica não funciona), mas você pode fazer a mesma coisa, clique com o botão direito o campo, formate como número personalizado, coloque 0 na caixa de formatação.