SQL Server 2008 R2 Reporting Services レポートを Excel にエクスポートしようとしています。レポートには日付の列があります。日付は SQL サーバーに日時として格納されます。レポートの言語は に設定されて=User!Language
おり、日付セルの形式は ですd
。レポートを PDF にエクスポート/レンダリングすると、ブラウザが要求したロケールですべてが表示されます ( Accept-Language
)。
ただし、Excel にレンダリングすると、形式が突然変更されます。たとえば、General ([$-10409]M.T.JJJJ)
(ドイツ語の Excel、OS のロケールが に設定されde-AT
、ブラウザのロケールがen-US
これは、Excel が完全に間違った形式で日付を表示することを意味します。日、月、年の順序はハードコードされており、区切り記号のみが現在のロケールから取得されます。これにより、異なる OS 言語間でレポートを共有することはほとんど不可能になります。あるd-m-yyyy
国から生成されたレポートは、異なる日付形式の国では日月年として表示されるためです (逆も同様です)。したがって、m/d/yyyy
フォーマットされた日付を期待する人は誰でもd/m/yyyy
.
これは、12 日を超える日付がない場合に特に危険です。つまり、明らかなエラーがないため、表示された日付を読み間違える可能性が非常に高くなります。
Excelでセル形式を手動で日付に設定すると、すべて問題なく表示され、OSのロケールによって形式が変わります。
Excelファイル自体を編集せずに、セルを強制的にExcelで日付としてフォーマットする可能性はありますか?
PS: 数値も数値としてではなく、[$-10409]#.##0,00;-#.##0,00
- としてフォーマットされます。これはそれほど問題ではありませんが、それでもエラーの原因となる可能性があります。(レポートの形式はN2
)