2010-12-05 31 views
7

假設我在Reporting Services模板中有一個日期值字段,例如: =CDate("2010.12.03"),我將「d」格式應用於這個單元格,根據描述,「將反映報告的區域設置」。我使用英文生成報告,日期顯示爲12/03/2010,這很好。現在,當我將此報告導出爲ex​​cel時,我不知道發生了什麼。SSRS 2008日期格式設置和導出爲ex​​cel混淆

第一種情況:計算機的區域設置被設置爲英語(美國)。當我打開Excel文檔時,單元格中顯示的值爲12/03/2010,如預期的那樣。當我點擊它時,我可以看到存儲在單元格中的實際值是2010.12.03,這看起來也很合理 - 某些格式應用於單元格,而不是簡單地以文本形式導出。但是當我嘗試弄清楚應用了什麼類型的格式時,通過右鍵單擊並選中「格式化單元格」,我看到格式是「常規」,即沒有!怎麼會這樣 ?順便說一下,這是Excel 2010,但是文件本身當然是.xls。

第二種情況,它變得更有趣:現在計算機的區域被設置爲例如立陶宛,日期格式爲2010.12.03。我打開相同的文件並查看12.03.2010。現在,這根本沒有任何意義。導出很多次,我遇到過,有時單元格在excel中格式化爲[$-10409]m.d.yyyy(在Custom部分下)。這是什麼,10409是什麼意思?最奇怪的部分:如果我關閉文檔而不保存,將計算機區域更改爲英文(美國),重新打開文檔,格式現在爲[$-10409]m/d/yyyy!這怎麼可能 !??

基本上同樣的事情發生在數字和千位/小數分隔符 - excel使用計算機的區域來格式化這些,但單元格的實際格式可以是類似於[$-10409]#,##0.00;-#,##0.00或常規 - 再次,根據區域電腦的風向和外面的溫度。

我的問題是,首先,什麼_ _正在進行?其次,excel文檔應該如何按照規範行事,即在BIDS設計的日期文本框中選擇「d」格式的格式「將反映報告的區域設置」的含義是什麼意思?這是否意味着格式將取決於報告的語言,並且結果在世界上的所有計算機上看起來都是一樣的(這是合理的,因爲這是其他格式的行爲方式,即如果將日期導出爲pdf,它始終保持不變)?如果不是,這在excel中似乎是部分情況,爲什麼導出的日期單元格沒有區域日期格式,即通常在Excel中使用的日期格式,即根據計算機的區域格式化日期格式的日期格式?

這些是excel的某些限制還是什麼?爲什麼我們不能有一致的行爲,即要麼使得所有對計算機文檔的查看文檔都很敏感或者不要,爲什麼實際行爲在兩者之間?

回答

2

Excel使用日期的自定義編碼,並使用機器區域設置作爲如何格式化內容的提示。編碼是古老的,並有很多具體的歷史陷阱。

這意味着您看到的各種錯誤經常發生 - 您將會將數據導出到Excel,然後格式化和內容首次由實際的Excel應用程序打開時被破壞。這個問題可能在任何地方 - 也許將數據導出到Excel的庫不能很好地處理一些更深奧的歷史案例,或者Excel可能會一直困惑自己。

我已經取得了一些成功,將日期作爲字符串導出到CSV文件,並將其格式化,然後將其導入到Excel中/使用Excel打開它們。

0

我整理我的日期格式的問題是:

  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時不會創建額外的空列。因爲2個excel列合併到1個日期單元格將永遠不會獲得任何格式,但「通用格式」