我正在尝试将 SQL Server 2008 R2 Reporting Services 报告导出到 Excel。该报告有一列日期。日期作为日期时间存储在 SQL 服务器中。报告的语言设置为=User!Language
,日期单元格的格式为d
。将报告导出/呈现为 PDF 时,所有内容都显示在浏览器发出的请求的区域设置中 ( Accept-Language
)。
然而,当渲染到 Excel 时,格式突然更改为General ([$-10409]M.T.JJJJ)
(德语 Excel,操作系统的区域设置为de-AT
,浏览器区域设置为en-US
)。
这意味着 Excel 以完全错误的格式显示日期 - 日、月和年的顺序是硬编码的,只有分隔符来自当前区域设置。这使得在不同操作系统语言之间共享报告几乎是不可能的,因为从一个d-m-yyyy
国家/地区生成的报告在具有不同日期格式的国家/地区仍将显示为日-月-年(反之亦然)。因此,任何期望m/d/yyyy
格式化日期的人都会得到d/m/yyyy
.
如果没有超过 12 天的日期,这尤其危险 - 即:很可能会误读显示的日期,因为没有明显的错误。
迄今为止,在 Excel 中手动设置单元格格式时,一切似乎都很好,并且格式会随着操作系统的区域设置而变化。
是否有可能强制单元格在 Excel 中格式化为日期,而无需编辑 Excel 文件本身?
PS:数字也不是数字格式,而是[$-10409]#.##0,00;-#.##0,00
- 这不是一个问题,但仍然可能是错误的来源。(报告格式为N2
)