假设我在 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.yyyy
在 Excel 中(在“自定义”部分下)。这是什么,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 打开它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)