Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带本地化的Excel中的SSRS数据格式_Excel_Date_Reporting Services_Localization_Format - Fatal编程技术网

带本地化的Excel中的SSRS数据格式

带本地化的Excel中的SSRS数据格式,excel,date,reporting-services,localization,format,Excel,Date,Reporting Services,Localization,Format,我正在尝试将SQL Server 2008 R2 Reporting Services报表导出到Excel。报告有一列日期。该日期作为日期时间存储在SQL server中。 报告的语言设置为=用户!语言,日期单元格的格式为d。 将报告导出/呈现为PDF时,所有内容都显示在浏览器接受语言发出的请求的区域设置中 但是,当呈现到Excel时,格式突然改变,例如,变为General[$-10409]M.T.jjj German Excel,操作系统的语言环境设置为de AT,浏览器语言环境为en US

我正在尝试将SQL Server 2008 R2 Reporting Services报表导出到Excel。报告有一列日期。该日期作为日期时间存储在SQL server中。 报告的语言设置为=用户!语言,日期单元格的格式为d。 将报告导出/呈现为PDF时,所有内容都显示在浏览器接受语言发出的请求的区域设置中

但是,当呈现到Excel时,格式突然改变,例如,变为General[$-10409]M.T.jjj German Excel,操作系统的语言环境设置为de AT,浏览器语言环境为en US

这意味着Excel以完全错误的格式显示日期-日、月和年的顺序是硬编码的,只有分隔符来自当前区域设置。这使得在不同操作系统语言之间共享报告几乎不可能,因为从d-m-yyyy国家/地区生成的报告在具有不同日期格式的国家/地区仍将显示为日-月-年,反之亦然。因此,任何希望使用m/d/yyyy格式日期的人都将获得d/m/yyyy

如果没有超过12天的日期,这尤其危险——即:由于没有明显的错误,很可能会误读显示的日期

在Excel中手动设置单元格格式到目前为止,一切似乎都很好,并且格式随操作系统的区域设置而变化

是否有可能强制单元格在Excel中格式化为日期,而不必编辑Excel文件本身


注:数字的格式也不是数字,而是[$-10409].0,00;-。0,00-这不是一个问题,但仍然可能是错误源。报告的格式是N2,我已经设法解决了类似的问题。解决办法相当简单。
在报表编辑器中,打开“设计”视图并选择要编辑的字段,单击鼠标右键,然后选择“查看表达式”或“文本框属性”。其余部分与Excel编辑器一样非常直观。

您可以更改操作系统语言吗?我就是通过更改操作系统语言才发现这一点的。如果单元格本身的格式为日期,Excel将以正确的语言相关格式显示单元格。当然,SSRS生成具有自定义格式的单元格并没有帮助,其中日期、月份和年份的位置保持不变。我不是服务器背景,但这似乎是个问题。服务器似乎对您的用户语言有其他想法。@glh服务器从浏览器接受语言标题接收语言,报告语言为=user!语言因此,服务器端的生成使用浏览器的语言进行。但是,数字和日期字段应显示在操作系统的区域设置中。分隔符取自操作系统语言,但不是顺序,因为SSRS为这些单元格引入了自定义格式?!。我无法强制报表以字符串形式生成日期和数字,因为这会使Excel文件变得毫无用处-因此我希望使用数字/日期而不是常规自定义。找到解决方案了吗?很抱歉,对于Excel导出中日期字段的格式依赖于区域设置/语言的问题,我找不到解决方案。虽然可以在数字设置中的文本框属性中将格式设置为日期,但这不会导致单元格被格式化为日期,而是使用硬编码日期格式。它是硬编码日期格式,因为在其他情况下,它将完全依赖于区域设置信息。不幸的是,没有其他选择,除非您为SSRS编写自己的渲染机制。在Excel文件中,我希望日期与区域设置/语言有关。正是由于这个原因,Excel可以选择将单元格格式化为日期。如果日期是2013年12月1日或2013年1月12日,但没有注明是m.d.yyyy还是d.m.yyyy,则会有很大的差异。对于业务报告来说,这可能会产生灾难性的影响。