3

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)

4

1 に答える 1