Sau*_*tka 7 reporting-services ssrs-2008
假设我在Reporting Services模板中有一个带日期值的字段,例如=CDate("2010.12.03"),我将"d"格式应用于此单元格,根据描述,"将反映报告的区域设置".我使用英语生成报告,日期显示为12/03/2010,这很好.现在,当我出口这份报告到Excel,我不知道是什么_ _发生.
第一种情况:计算机的区域设置设置为英语(美国).当我打开excel文档时,单元格中看到的值12/03/2010正如预期的那样.当我点击它时,我可以看到存储在单元格中的实际值2010.12.03,这似乎也是合理的 - 一些格式应用于单元格,它不是简单地导出为文本.但是当我试图弄清楚应用了什么类型的格式时,通过右键单击并检查格式单元格,我看到格式是"常规",即没有!怎么会这样 ?顺便说一下,这是Excel 2010,但文件本身当然是.xls.
第二种情况,它变得更有趣:现在计算机的区域设置为例如日期格式的立陶宛2010.12.03.我打开同一份文件看看12.03.2010.现在这根本没有任何意义.导出很多次,我遇到过,有时单元格格式化为[$-10409]m.d.yyyyexcel 格式(在"自定义"部分下).这是什么,10409是什么意思?最奇怪的部分:如果我不保存关闭文档,将计算机区域更改回英语(美国),重新打开文档,格式现在就是[$-10409]m/d/yyyy!这怎么可能 !??
基本上同样的事情发生在数字和千位/小数分隔符上 - excel使用计算机的区域来格式化这些,但是单元格的实际格式可能类似于[$-10409]#,##0.00;-#,##0.00或一般 - 再次,取决于计算机的区域,方向风和外面的温度.
那么我的问题是,首先,_ _正在发生什么?第二,excel文档应该如何根据规范行事,即在BIDS设计的格式"将反映报告的区域设置"的声明是什么,我选择日期文本框的"d"格式,意味着什么?这是否意味着,格式将由报告的语言决定,结果在世界上所有计算机上看起来都是一样的(这是有道理的,因为这是其他格式的行为,即如果您将日期导出到pdf,它始终保持不变)?如果不是,这在excel中似乎是部分情况,为什么导出的日期单元格不具有区域日期格式,即您通常在excel中使用的日期格式,
这些是excel的某种局限还是什么?为什么我们不能有一致的行为,即要么使一切都对查看文档的计算机文化敏感,要么不这样做,为什么实际行为介于两者之间?
Excel 对日期使用自定义编码,并使用计算机区域设置作为如何设置内容格式的提示。该编码是古老的,并且有许多特定的、历史性的陷阱。
这意味着您经常看到的那种错误确实会发生 - 您将拥有已导出到 Excel 的数据,一旦实际的 Excel 应用程序第一次打开,其格式和内容就会被破坏。问题可能出在任何地方 - 也许将数据导出到 Excel 的库不能很好地处理一些更深奥的历史案例,或者 Excel 可能在整个过程中使自己感到困惑。
过去,我已经取得了一些成功,将日期作为字符串导出到 CSV 文件,去掉格式,然后将它们导入到 Excel 中/使用 Excel 打开它们。