Ssrs

為什麼此 SSRS 報告在導出到 Excel 時將 BIGINT 值四捨五入到最接近的千位?

  • August 18, 2017

我有一個通過儲存過程 (SP) 填充的 SQL Server Reporting Services (SSRS) 2012 報告。SP 返回各種欄位,其中之一是BIGINT數據類型。當我直接執行 SSRS 報告時,值會正確顯示,但是當我將輸出導出到 Excel 時,它會四捨五入到最接近的千分之一。

例如,這是我所看到的一個例子。

正確的值:480758225903628660

Excel 文件中顯示的值:480758225903629000

將8660舍入為9000。真是令人沮喪,微軟的文件沒有提到這種行為。我還在報告中探勘了我能想到的可能會影響這一點的任何地方,例如文本框屬性:

在此處輸入圖像描述

…佔位符屬性:

在此處輸入圖像描述

…以及欄位本身的值:

在此處輸入圖像描述

我可以通過將欄位值包裝在CStr()or.ToString()函式中來將欄位轉換為字元串來“修復”它,但這也將輸出視為字元串而不是數字。有沒有辦法將其導出到 Excel,以便不會發生舍入但仍保持該值為數字?

哦,伙計,我完全誤解了你最初的問題。這是一個 100% 的 Excel 問題。在將其導出到 Excel 之前,您需要將該值轉換為文本/字元串。

如果你嘗試這個實驗,你會得到同樣的問題:

  • 通過 SSMS 查詢過程並在網格中顯示結果
  • 複製結果並將它們直接粘貼到 Excel 中。

注意到這一點證實它與 SSRS 無關,而是與 Excel 無關。

但是,如果您:

  • 通過 SSMS 查詢過程並在網格中顯示結果
  • *將Excel中的目標列更改為格式類型:TEXT
  • 複製結果並將它們直接粘貼到 Excel 中。

您會注意到該值是正確通過的,而不是四捨五入的。*在粘貼值之前更改列的格式非常重要,以便您可以看到它的實際效果。它基本上是轉換為科學記數法,然後顯示該值,該值始終是四捨五入的。

*感謝 Jerb 讓我重新閱讀原始問題。我瀏覽了一下並沒有註意到“但是當我將輸出導出到 Excel 時,它會四捨五入到最接近的千分之一。”

引用自:https://dba.stackexchange.com/questions/183844