【发布时间】:2011-12-22 15:41:43
【问题描述】:
我正在使用 SSRS 构建可导出为多种类型(PDF、XLS、CSV...)的报告 该报告包含在一个表格中,某些列具有诸如纬度或经度之类的数值,例如 -1,234567
当导出为 csv 并在 excel 中打开时,这些数值会丢失“,”
是否可以在报告生成器中将此值作为文本保存,而不会对 csv 文件进行格式更改?
tks
【问题讨论】:
标签: reporting-services csv number-formatting
我正在使用 SSRS 构建可导出为多种类型(PDF、XLS、CSV...)的报告 该报告包含在一个表格中,某些列具有诸如纬度或经度之类的数值,例如 -1,234567
当导出为 csv 并在 excel 中打开时,这些数值会丢失“,”
是否可以在报告生成器中将此值作为文本保存,而不会对 csv 文件进行格式更改?
tks
【问题讨论】:
标签: reporting-services csv number-formatting
一个简单的方法是使用格式表达式而不是直接访问您的报告字段。
例如
=Format(Fields!OrderPrice.Value, "#,###.00")
而不是..
=Fields!OrderPrice.Value
这会将数值强制转换为字符串。数字格式将确保您保留逗号。通过 CSV 导出时,该值将用引号括起来,这意味着您的格式化逗号不会使解析器出错。
大量警告 这个解决方案并不完美。问题是,尽管您在 CSV 文件中获得了所需的结果,但您生成的任何 SSRS Excel 导出都会将该字段标记为文本内容,这意味着您的用户每次打开该报告时都必须告诉 Excel 不同。
同样,如果有人在 Excel 中打开您的 CSV 文件,也会发生同样的事情。 Excel 不够聪明,无法识别引号中的内容实际上是一个数字,它会再次将该列视为文本。
事实上,CSV 是一种有限的格式。主要关注的是内容 - 它不传达格式信息,即使可以为 SSRS 提供更多关于单个导出例程的“指导”,CSV 文件格式的固有限制也意味着某种妥协(或额外的工作)在 Excel 端)必须进行。
【讨论】: