【问题标题】:SSRS 2008 date formatting and exporting to excel confusionSSRS 2008 日期格式和导出到 excel 混淆
【发布时间】:2010-12-05 11:06:59
【问题描述】:

假设我在 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。现在这根本没有任何意义。导出多次我遇到过有时单元格在 excel 中被格式化为[$-10409]m.d.yyyy(在自定义部分下)。这是什么,10409是什么意思?最奇怪的部分:如果我关闭文档而不保存,将计算机区域更改回英语(美国),重新打开文档,格式现在是 [$-10409]m/d/yyyy !这怎么可能!??

对于数字和千位/小数分隔符,基本相同 - excel 使用计算机的区域来格式化这些,但单元格的实际格式可能类似于 [$-10409]#,##0.00;-#,##0.00 或 General - 再次取决于电脑所在区域、风向和室外温度。

我的问题是,首先,__ 发生了什么?其次,excel文档应该如何根据规范表现,即在设计的BIDS中,格式“将反映报告的区域设置”的声明是什么意思,其中我为日期文本框选择了“d”格式,是什么意思?这是否意味着,格式将由报告的语言确定,并且结果在世界上所有计算机上看起来都相同(这是有道理的,因为这是其他格式的行为方式,即如果您将日期导出到pdf,它始终保持不变)?如果不是,这在 excel 中似乎是部分情况,为什么导出的日期单元格没有区域日期格式,即您通常在 excel 中使用的那个,根据计算机的区域格式化日期的那个?

这些是excel的某种限制还是什么?为什么我们不能有一致的行为,即要么让所有内容都对查看文档的计算机的文化敏感,要么不这样做,为什么实际行为介于两者之间?

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    Excel 对日期使用自定义编码,并使用机器区域设置作为有关如何格式化内容的提示。编码是过时的,并且有很多特定的、历史性的陷阱。

    这意味着您经常看到的那种错误确实会发生 - 您将拥有已导出到 Excel 的数据,然后在第一次被实际的 Excel 应用程序打开时,其格式和内容会被破坏。问题可能出在任何地方 - 可能将数据导出到 Excel 的库没有很好地处理一些更深奥的历史案例,或者 Excel 在此过程中自己搞糊涂了。

    我过去曾成功地将日期作为字符串导出到 CSV 文件,去除格式,然后将它们导入 Excel/用 Excel 打开它们。

    【讨论】:

      【解决方案2】:

      我按以下方式对日期格式问题进行了排序:

      1. 为日期添加计算字段:

        =IIF(IsNothing(Fields!Date_Delivery_Confirmed.Value),nothing,DateSerial(DatePart("yyyy",Fields!Date_Delivery_Confirmed.Value), DatePart("m",Fields!Date_Delivery_Confirmed.Value),DatePart("d",Fields!Date_Delivery_Confirmed.Value)))
        
      2. 将单元格文本框设置为日期格式

      3. 我如何使用 *dateformats(本地化)我检查了我的服务器笔记本电脑,报告设置为正确的语言

      4. 我在报表中垂直对齐了元素,因此它(视觉间隙)在导出到 Excel 时不会创建额外的空列。因为合并到 1 个日期单元格的 2 个 excel 列将永远不会得到任何格式,但“通用格式”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-20
        • 2015-11-11
        • 2018-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多