我有一个通过存储过程 (SP) 填充的 SQL Server Reporting Services (SSRS) 2012 报告。SP 返回各种字段,其中之一是BIGINT
数据类型。当我直接执行 SSRS 报告时,该值会正确显示,但当我将输出导出到 Excel 时,它会四舍五入到最接近的千分之一。
例如,这是我所看到的一个例子。
正确的价值:480758225903628660
Excel 文件中显示的值:480758225903629000
它四舍五入8660到9000。真令人沮丧,Microsoft 的文档对这种行为只字未提。我也在报告中到处挖掘我能想到的可能会影响这一点,例如文本框属性:
...占位符属性:
...以及字段本身的值:
CStr()
我可以通过将字段值包装在or.ToString()
函数中将字段转换为字符串来“修复”它,但这也将输出视为字符串而不是数字。有没有办法将其导出到 Excel,这样就不会发生四舍五入但仍保持该值为数字?
正如 MguerraTorres 所建议的那样,SSRS 可能在某处感到困惑,并且该值表明它正在沿线某处转换为某种浮点数据类型。
尝试通过查看 .rdl 文件原始文本中的 xml 检查 SSRS 分配的数据类型。
对于一个简单的 bigint 列,我看到了一个类似这样的 SSRS 字段定义:
然后您可以直接在该文本节中编辑数据类型并欺骗 SSRS 进行自我排序
OHHH 伙计,我完全误读了你最初的问题。这是 100% 的 excel 问题。在将其导出到 Excel 之前,您需要将该值转换为文本/字符串。
如果您尝试这个实验,您将遇到完全相同的问题:
注意这证实它与 SSRS 无关,但与 Excel 无关。
但是,如果您:
您会注意到该值正确通过而不是四舍五入。*在粘贴值之前更改列的格式非常重要,这样您才能看到它的实际效果。它基本上是转换为科学记数法,然后显示该值,该值始终是四舍五入的。
*感谢 Jerb 让我重新阅读原始问题。我浏览了一下并没有注意到“但是当我将输出导出到 Excel 时,它会四舍五入到最接近的千分之一。”
https://www.tutorialgateway.org/format-numbers-in-ssrs/
通过右键单击文本框并从下拉列表中选择“文本框属性”来格式化文本字段,然后单击数字,然后单击自定义,并将 0 放入自定义格式框中。我在阅读了另一个关于如何将以科学计数法形式下载的 excel 字段转换为原始格式(一旦它们采用科学计数法就格式化为文本不起作用)的论坛后发现了这一点,但你可以做同样的事情,右键单击该字段,格式为数字自定义,在格式框中输入 0。